Wie Sortiere ich eine generische Liste mit einer benutzerdefinierten comparer?

Ich bin irgendwie ein Delphi-Neuling und ich weiß nicht, wie die Sort-Methode, eine TList von Datensätzen aufgerufen wird, um zu Sortieren die Datensätze nach aufsteigenden integer-Wert.
Ich habe einen Datensatz wie folgt:

 type
   TMyRecord = record
     str1: string;
     str2: string;
     intVal: integer;
   end;

Sowie eine generische Liste von solchen Aufzeichnungen:

TListMyRecord = TList<TMyRecord>;

Habe versucht zu finden ein code-Beispiel in die Hilfe-Dateien und fand dieses:

MyList.Sort(@CompareNames);

Welche ich nicht verwenden kann, da es verwendet Klassen. Also versuchte ich zu schreiben, meine eigene compare-Funktion mit etwas anderen Parametern:

function CompareIntVal(i1, i2: TMyRecord): Integer;
begin
  Result := i1.intVal - i2.intVal;
end;

Aber der compiler wirft immer ein "nicht genügend Parameter" - Fehler, wenn ich rufen Sie es mit open.Sort(CompareIntVal);, was offensichtlich scheint; so habe ich versucht, näher an die Hilfe Datei:

function SortKB(Item1, Item2: Pointer): Integer;
begin
  Result:=PMyRecord(Item1)^.intVal - PMyRecord(Item2)^.intVal;
end;

mit PMyRecord als PMyRecord = ^TMyRecord;

Habe ich versucht, verschiedene Möglichkeiten, eine Funktion aufrufen, die immer wieder einige Fehler...

InformationsquelleAutor p1.e | 2012-11-06

Schreibe einen Kommentar