Jak posortować ogólną listę za pomocą niestandardowego porównania?

Jestem w pewnym sensie nowicjuszem Delphi i nie rozumiem, w jaki sposób wywoływana jest metoda sortowania TList rekordów, aby posortować rekordy według rosnącej wartości całkowitej. Mam rekord podobny do następującego:

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

I ogólna lista takich rekordów:

TListMyRecord = TList<TMyRecord>;

Próbowałem znaleźć przykładowy kod w plikach pomocy i znalazłeś ten:

MyList.Sort(@CompareNames);

Którego nie mogę użyć, ponieważ używa klas. Próbowałem więc napisać własną funkcję porównania z nieco innymi parametrami:

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

Ale kompilator zawsze zgłasza „niewystarczające parametry” - błąd, gdy go wywołamopen.Sort(CompareIntVal);, co wydaje się oczywiste; więc starałem się być bliżej pliku pomocy:

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

z PMyRecord jakPMyRecord = ^TMyRecord;

Próbowałem różnych sposobów wywoływania funkcji, zawsze pojawia się jakiś błąd ...

questionAnswers(4)

yourAnswerToTheQuestion