Ich habe folgende Klassen:
Delphi-Quellcode:
TObjX = class(TObject
MD5 : integer;
end;
TObjXListe = class(TObjectList<TObjX>)
private
function VergleicheMD5(const L,R:TObjX):Integer;
public
procedure Sort;
end;
procedure TObjXListe.Sort;
begin
inherited Sort(TComparer<TObjX>.Construct(Self.VergleicheMD5));
end;
Das funktioniert.
Nun habe ich aber folgende Klasse:
Delphi-Quellcode:
TKlasseX = class(TObject)
ObjXListe : TObjectList<TObjX>;
end;
Wie sortiere ich jetzt diesmal die TObjectList<TObjX> mit einem Custom Comparer? Prinzipiell bekäme ich das schon hin, es gibt mehrere Lösungen, aber ich hätte es gern so konzise wie
inherited Sort(TComparer<TObjX>.Construct(Self.VergleicheMD5)).
Alle Versuche, diese Zeile so zu modifizieren, dass sie klappt, schlugen fehl.
Und auch folgende Prozedur blieb immer hängen:
Delphi-Quellcode:
procedure TKlasseX.SortiereNachMD5;
begin
ObjXListe.Sort(
TComparer<TObjX>.Construct(
function(const L,R: TObjX): Integer
begin
Result := L.MD5 - R.MD5;
end))
end;
Und zwar nach dem ersten
end
mit der Begründung: Fehler 2480: Inkompatible Typen: 'System.Generics.Defaults.TComparison<Modulxyz.TOb jX>' und 'Procedure'.
Kann mich da jemand erleuchten?