Einzelnen Beitrag anzeigen

Benmik

Registriert seit: 11. Apr 2009
542 Beiträge
 
Delphi 11 Alexandria
 
#1

TObjectList und CustomComparer

  Alt 17. Jul 2020, 22:38
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?

Geändert von Benmik (18. Jul 2020 um 13:11 Uhr) Grund: ObjX -> TObjX
  Mit Zitat antworten Zitat