... fügt man weitere Elemente hinzu, so ist die Liste nicht automatisch sortiert, aber für die Bestimmung des Item-Index wird der Comparer bemüht ...
Wieso erwartest Du, das die Liste automatisch sortiert ist? Das wäre doch performancetechnisch völliger Quark und ist außerdem nicht die Aufgabe einer Liste.
Ich erwarte doch nicht, dass die Liste sich automatisch selber sortiert. Aber ich erwarte eben von einer Liste, dass ich mit
IndexOf
den Index des Elements in der Liste bekomme, also
Delphi-Quellcode:
MyIndex := 4;
Assert( MyList.IndexOf( MyList[MyIndex] ) = MyIndex );
Den Comparer habe ich jetzt erweitert zu
Delphi-Quellcode:
LList := TObjectList<TItem>.Create( TComparer<TItem>.Construct(
function( const L, R : TItem ) : Integer
begin
Result := L.Value - R.Value;
if Result = 0
then
Result := Integer( L ) - Integer( R );
end ) );
bzw. im originalen Code merke ich mir einfach den Index und der Kas ist gegessen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)