Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

Re: schnellere Alternative zu StringListe.IndexOf() gesucht

  Alt 25. Mai 2010, 21:37
Nja, ganz einfach.
Du führst die StringList_MN als sortierte Liste, damit kannst du Sorted, Duplicates verwenden, welche wiederum das schnellere Find nutzen und gleichzeitig automatisch die Duplikate ignorieren.
Delphi-Quellcode:
StringList_MN.Sorted := True;
StringList_MN.Duplicates := dupIgnore;
so fügst du dann die Strings der Liste hinzu und zu jedem String kommt noch ein Index (Reihenfolge des Einfügens)
StringList_MN.AddObject(S, TObject(StringList_MN.Count)); Am Ende wird die Reihenfolge über die Indize wiederhergestellt.
Delphi-Quellcode:
StringList_MN.CustomSort(
  function(List: TStringList; Index1, Index2: Integer): Integer
  begin
    Result := Integer(List.Objects[Index1]) - Integer(List.Objects[Index2]);
  end);
oder passend für dein D7
Delphi-Quellcode:
function MySort(List: TStringList; Index1, Index2: Integer): Integer
begin
  Result := Integer(List.Objects[Index1]) - Integer(List.Objects[Index2]);
 end);

StringList_MN.CustomSort(MySort);
Falls die Reihenfolge egal ist, dann einfach nur
Delphi-Quellcode:
StringList_MN.Sorted := True;
StringList_MN.Duplicates := dupIgnore:

...
StringList_MN.Add(S);
und CustomSort weglassen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat