Nicht alle Klassen, die von
TStrings abgeleitet sind, können ohne weiteres sortiert werden.
(Die
Sort-Methode gibt es erst ab
TStringList)
Delphi-Quellcode:
//Beispiel
begin
Memo1.Lines.Sort; // geht nicht!!
end;
Deshalb muss man alle Strings in ein TStringList-Objekt umkopieren, dort sortieren und wieder zurückkopieren.
Dabei hilft die Procedure
SortTStrings:
Delphi-Quellcode:
unit USortUtil;
interface
uses Classes;
procedure SortTStrings(Strings:TStrings; Duplicates:TDuplicates);
implementation
procedure SortTStrings(Strings:TStrings; Duplicates:TDuplicates);
var
tmp: TStringList;
begin
Assert(Assigned(Strings), '
SortTStrings: invalid arg');
if Strings
is TStringList
then
begin
TStringList(Strings).Duplicates := Duplicates;
TStringList(Strings).Sort;
end else
begin
tmp := TStringList.Create;
try
tmp.Duplicates := Duplicates;
tmp.Sorted := True;
// make a sorted copy
tmp.Assign(Strings);
// copy back
Strings.Assign(tmp);
finally
tmp.Free;
end;
end;
end;
end.
Und zu guter Letzt noch ein Beispiel:
Delphi-Quellcode:
uses USortUtil;
...
...
begin
SortTStrings(Memo1.Lines, [dupAccept]);
end;
[edit=Matze]Code formatiert. Mfg, Matze[/edit]