Тот факт, что вы передаете CompareKeys
в TComparer.Construct
, означает, что CompareKeys
не должна быть нормальной функцией. Delphi 2009 представил ссылки на методы , которые могут ссылаться на обычные функции, методы и анонимные методы. Я предполагаю, что TComparer.Construct
создает ссылку на метод из обычной функции, которую вы ему даете. (Хотя я не уверен, почему; я думал, что компилятор сделал это преобразование автоматически.)
Предположим, у вас есть функция с тремя аргументами, которая получает список и два элемента для сравнения:
function CompareKeys(List: TList<Integer>; Item1, Item2: Integer): Integer;
Вы должны быть в состоянии передать анонимный метод примерно так:
KeyList.Sort(function(Item1, Item2: Integer): Integer;
begin
Result := CompareKeys(KeyList, Item1, Item2);
end);