Find funktioniert
nur mit einer sortierten Liste, leider gibt es keine Prüfung, ob es sortiert ist und somit liefert Find falsche Werte.
Und Dupplicates funktioniert auch
nur mit einer sortierten Liste und ebenfalls kein Prüfung.
Delphi-Quellcode:
function TStringList.Add(const S: string): Integer;
begin
Result := AddObject(S, nil);
end;
function TStringList.AddObject(const S: string; AObject: TObject): Integer;
begin
if not Sorted then
Result := FCount
else
if Find(S, Result) then
case Duplicates of
dupIgnore: Exit;
dupError: Error(@SDuplicateString, 0);
end;
InsertItem(Result, S, AObject);
end;
Wenn du dennoch die Liste (Un)Sortierung behalten willst, dann führe einen Index mit und Zersortiere es danach wieder.
z.B. irgendwie so
Delphi-Quellcode:
StringList_MN.Sorted := True;
StringList_MN.Duplicates := dupIgnore;
// alles hinzufügen
StringList_MN.AddObject(S, TObject(StringList_MN.Count));
...
// und zum Schluß nach Index wieder zurücksortieren
StringList_MN.CustomSort(
function(List: TStringList; Index1, Index2: Integer): Integer
begin
Result := Integer(List.Objects[Index1]) - Integer(List.Objects[Index2]);
end);