Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Textdatei nach bestimmten Kriterien sortieren


driv3r - Fr 19.11.10 13:41
Titel: Textdatei nach bestimmten Kriterien sortieren
Hallo allerseits,
mir wurde schon mal geholfen, hoffe, dass es diesmal auch der Fall wird. :)
Ich sollte ein Programm schreiben, dass eine Textdatei ausliest (die per Zufallsgen. diese Datei mit Text füllt) und dann den Inhalt sortiert im Programm darstellt. Der Sortiervorgang sollte dabei unter bestimmten Kriterien ablaufen wie z.B. "Jedes 2. oder 3. Wort nach Semikolon( ; ) angezeigt werden (im Programm)".
Ich habe bisher Bubble-Sort und QuickSort in Betracht gezogen, doch weiter komme ich nun nicht, da ich es in Delphi nicht umsetzen kann. Ich scheitere an der Grundidee, wie es in Delphi aussehen (Quellcode) soll.
Hat vtl. jmd. in der Richtung schon was programmiert?


Bergmann89 - Fr 19.11.10 20:31

Hey,

wenn du nur das einer Wort speichern willst, dann würd ich ne TStringList nehmen, und dann beim laden immer ein Wort hinzufügen. Dann musst du die Liste nur noch sortieren.
Wenn du mehrere Daten pro Eintrag haben willst, dann würd ich eine TList nehmen und ein record, das die Daten speichert. Das sieht dann ungefähr so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
type
  TMyData = packed record
    Index: Integer;
    Word1, Word2, Filanme: String;
  end;
  PMyData = ^TMyData;
  
var
 List: TList;

procedure AddToList(Index: Integer; Word1, Word2, Filename: String);
var
  p: PMyData;
begin
  new(p);
  p^.Index    := Index;
  p^.Word1    := Word1;
  p^.Word2    := Word2;
  p^.Filename := Filename;
  List.Add(p);
end;

procedure DelFromList(Index: Integer);
var
  p: TMyData;
begin
  p := List[Index];
  SetLength(p^.Word1, 0);
  SetLength(p^.Word2, 0);
  SetLength(p^.Filenama, 0);
  Dispose(p);
  List.Delete(Index);
end;

function GetListItem(Index: Integer): TMyData;
begin
  result := PMyData(List[Index])^;
end;

So in etwas funktioniert das Ganze dann. Ist natürlich nur ein ausschnitt der möglichen Funktionen. Sortieren kannst du das dann mithilfe von List.Sort(), dazu findest du was in der Delphi hilfe, oder hier im Forum.

€: natrlich würde es sich anbieten eine Klasse zu schreiben, die von TList abgeleitet ist und die Methoden von TList mit deinen Daten implementiert.

MfG Bergmann