Jupp, sort sorttiert "binär",
aber willst du nach "logischem" Inhalt eines/mehrerer Felder des Records sortieren, dann brauchst du einen Comparer, welcher als Parameter an Sort übergeben wird.
Zitat:
In diesem Fall sind mußt du auch noch casten.
PMyRecord(Item1)^
oder
TMyRecord(Item1^)
[edit]
Wollte grade sagen, dass du besser die generische TList<> verwenden solltest,
aber tutst du ja schon.
Dann schau dir mal an, wie der Sort-Parameter definiert ist.
* ein Interface (IComparer)
* also nun eine Funktion suchen, welche ein IComarer zurückgibt und am Besten eine "Funktion" rein nimmt
* oder selber eine Klasse schreiben, welche IComarer implementiert
* oder eben nach einer fertigen Klasse für das Interface suchen, welche es implementiert (TComparer)
* dafür mußt du dir also eine Instanz erstellen (irgendwas mit "Construct") ... schau einfach mal in die Generics-Units.
[add]
Auf die Schnelle mal etwas für ein TArray<> gefunden, aber ist prinzipiell gleich.
Delphi-Quellcode:
TArray.Sort<TComponent>(FFormDataSources, TComparer<TComponent>.Construct(function(const Left, Right: TComponent): Integer
begin
Result := CompareStr(Left.Name, Right.Name); //Nach Komponentname sortieren
end));