Wie sortiere ich eine allgemeine Liste mit einem benutzerdefinierten Vergleicher?

Ich bin ein bisschen ein Delphi-Neuling und verstehe nicht, wie die Sort-Methode einer TList of Records aufgerufen wird, um die Datensätze nach aufsteigendem Integer-Wert zu sortieren. Ich habe eine Aufzeichnung wie die folgende:

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

Und eine allgemeine Liste solcher Aufzeichnungen:

TListMyRecord = TList<TMyRecord>;

Habe versucht, ein Codebeispiel in den Hilfedateien zu finden und dieses gefunden:

MyList.Sort(@CompareNames);

Was ich nicht verwenden kann, da es Klassen verwendet. Also habe ich versucht, meine eigene Vergleichsfunktion mit ein wenig anderen Parametern zu schreiben:

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

Aber der Compiler wirft immer einen "nicht genügend Parameter" -Fehler, wenn ich ihn mit aufrufeopen.Sort(CompareIntVal);, was offensichtlich scheint; Deshalb habe ich versucht, näher an der Hilfedatei zu bleiben:

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

mit PMyRecord alsPMyRecord = ^TMyRecord;

Ich habe verschiedene Methoden zum Aufrufen einer Funktion ausprobiert, wobei immer ein Fehler aufgetreten ist ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage