Ich verwalte eine sortierte Liste von Objekten so:
Delphi-Quellcode:
function TssObjectComparer.Compare(const O1, O2: TssObject): Integer;
begin
Result := CompareStr(O1.Id, O2.Id);
end;
function TssIO_Custom.GetObject(Id: TssId): TssObject;
var
Index: Integer;
ssObj: TssObject;
begin
Result := nil;
// Objekt wird ohne Registrierung erzeugt um nach einem Objekt mit der passenden ID suchen zu können
ssObj := TssObject.Create(nil, Id, True);
if ssObjectList.BinarySearch(ssObj, Index) then
Result := ssObjectList[Index];
FreeAndNil(ssObj);
end;
procedure TssIO_Custom.RegisterObject(ssObj: TssObject);
var
Index: Integer;
begin
...
if not ssObjectList.BinarySearch(ssObj, Index) then
ssObjectList.Insert(Index, ssObj);
end;
Geht nach meiner Einschätzung schnell und einfach. Man muss natürlich immer diese zwei Methoden nutzen.