Wie kommt Ihr eigentlich darauf, dass das nicht funktionieren soll? In diesem Beispiel ist FList ein privates Formularfeld vom Typ TList.
Delphi-Quellcode:
type
PRec = ^TRec;
TRec = record
Col1, Col2, Col3: string;
end;
...
//Befüllen
var
NewRec: PRec;
begin
New(NewRec);
NewRec^.Col1 := 'Anton';
NewRec^.Col2 := 'Berta';
NewRec^.Col3 := 'Cäsar';
FList.Add(NewRec);
New(NewRec);
NewRec^.Col1 := 'August';
NewRec^.Col2 := 'Bär';
NewRec^.Col3 := 'C++';
FList.Add(NewRec);
New(NewRec);
NewRec^.Col1 := 'Auf der Mauer';
NewRec^.Col2 := 'Auf der Lauer';
NewRec^.Col3 := 'Dideldum dideldei';
FList.Add(NewRec);
end;
//Sortieren
function CompareFunc(Item1, Item2: PRec): integer;
begin
Result := AnsiCompareStr(Item1^.Col2, Item2^.Col2);
end;
procedure TfrmTest.btnSortClick(Sender: TObject);
begin
FList.Sort(@CompareFunc);
end;
...
//Ausgeben
for i := 0 to FList.Count - 1 do
begin
Rec := PRec(FList[i])^;
mmoAusgabe.Lines.Add(Format('%s;%s;%s', [Rec.Col1, Rec.Col2, Rec.Col3]));
end;
Das ergibt dann folgende Ausgabe:
Zitat:
Auf der Mauer;Auf der Lauer;Dideldum dideldei
August;Bär;C++
Anton;Berta;Cäsar