TObjectList<T>.Sort
объявляется как:
procedure Sort(const AComparer: IComparer<T>);
IComparer<T>
определяется как:
IComparer<T> = interface
function Compare(const Left, Right: T): Integer;
end;
Вы создаете экземпляр TObjectList<MyType>
, поэтому вам нужно передать IComparer<MyType>
в Sort
. Для этого вам понадобится объект, обеспечивающий конкретную реализацию этого интерфейса.
Один очевидный способ сделать это - создать подкласс TObjectList<MyType>
и реализовать там интерфейс.
Другой способ сделать это - использовать TComparer<T>
для создания IComparer<T>
по требованию с помощью функции класса Construct
. Вам нужно будет предоставить функцию сравнения:
TComparison<T> = reference to function(const Left, Right: T): Integer;
Ответ Леонардо демонстрирует, как это сделать.