Mir gelingt es nicht, die Callbackfunktion als Teil der Klasse zu definieren, zu der sie jeweils gehört. Wenn ich einfach im implementation-Teil die Callbackfunktion definiere, klappt alles auf Anhieb. Es wäre bei vielen verschiedenen Sortierroutinen für viele verschiedene von TObjectList abgeleitete Klassen ja aber eigentlich wünschenswert, die Compare-Funktionen in die Klasse zu integrieren. Man kann aber keine Methode statt des Prozedur-Pointers angeben.
Wie löst Ihr so etwas? Gibt es eine geradlinige Lösung, auf die ich nicht komme?
Code:
function CompareKey1(Item1, Item2: TMyObject):Integer; // OK
function MyObjectList.CompareKey1(Item1, Item2: TMyObject):Integer; // geht nicht
procedure MyObjectList.MySort;
begin
Sort(@CompareKey1);
end;