Einzelnen Beitrag anzeigen

OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: TObjectList<T> und Comparer

  Alt 27. Jan 2015, 14:07
Generische Container hin oder her, Sortierer hin oder her:

Dein TPositionComparer leitet sich von TInterfacedObject ab und realisiert ein oder mehrere Interfaces. Solche Instanzen referenzierst du entweder weiterhin über die Klasse, so wie du es mit var TCo: TPositionComparer; getan hast. Oder du verwendest nur Interface-Variablen wie bspw. var myComparer: IComparer<TPosition>) . Dann freust du dich dass es sich nun wie mit Records, Strings oder Arrays verhält: Du machst dir keine Sorgen mehr über die Freigabe und es passiert automatisch.
Aha...TPositionComparer -> Sowohl .Create als auch .Free aufrufen.
IComparer<TPosition>, alles geht von selbst.

Ist das wirklich so simpel ?

Wie sieht das dann in meinem Falle aus ?:

Delphi-Quellcode:
var
   TCo: IComparer<TPosition>;
begin
   FPositions.Sort(TCo);
end;
kann es kaum sein. Woher soll Sort denn wissen, das mein Comparer aufgerufen wird ?

Es gibt auch ein TComparer<T>.Construct

Einfach mal in die Doku schauen
Die Doku ist, ebenso wie bei .Sort, einfach nur sensationell unverständlich, wenn man mit Interfaces ein wenig auf Kriegsfuß steht. Außerdem muß da auch noch ein ominöser THasher<T> übergeben werden... Da hab ich erstmal aufgegeben.

Geändert von OlafSt (27. Jan 2015 um 14:09 Uhr)
  Mit Zitat antworten Zitat