Как отсортировать общий список с помощью пользовательского компаратора?
я вроде Delphi-новичок, и я неПолучите, как вызывается метод Sort TList of Records для сортировки записей по возрастанию целочисленного значения. У меня есть такая запись:
type
TMyRecord = record
str1: string;
str2: string;
intVal: integer;
end;
И общий список таких записей:
TListMyRecord = TList;
Попытался найти пример кода в файлах справки и нашел этот:
MyList.Sort(@CompareNames);
Что я могут, так как он использует классы. Поэтому я попытался написать свою собственную функцию сравнения с немного другими параметрами:
function CompareIntVal(i1, i2: TMyRecord): Integer;
begin
Result := i1.intVal - i2.intVal;
end;
Но компилятор всегда выдаетнедостаточно параметров - ошибка, когда я звоню сopen.Sort(CompareIntVal);
что кажется очевидным; поэтому я попытался остаться ближе к файлу справки:
function SortKB(Item1, Item2: Pointer): Integer;
begin
Result:=PMyRecord(Item1)^.intVal - PMyRecord(Item2)^.intVal;
end;
с PMyRecord в качествеPMyRecord = ^TMyRecord;
Я пробовал разные способы вызова функции, всегда получая некоторые ошибки ...