Einzelnen Beitrag anzeigen

a.def

Registriert seit: 18. Nov 2016
365 Beiträge
 
Delphi XE8 Professional
 
#1

String in TStringList finden verschnellern?

  Alt 7. Jan 2017, 15:38
In meinem Programm werden zwei StringListen mit mal mehr, mal weniger Einträgen erzeugt. Das kann bis in die Tausende und Zehntausende, auch Hunderttausende gehen.

Ich prüfe an einer bestimmten Stelle, ob ein Eintrag X aus Liste 1 in Liste 2 vorhanden ist. Das mache ich so
Delphi-Quellcode:
// Beispiel:
// sTmp ist 'C:\1\2\3\4.txt';
// List enthält ("Liste 2)
// - C:\1.txt
// - C:\1\2.txt
// - C:\1\2\3.txt
// - C:\1\2\3\4.txt

function IndexOfListObjects(const sTmp: string; List: TStringList): Integer;
begin
 for Result := 0 to List.Count - 1 do
  if sTmp = PFileListEntry(List.Objects[Result])^.sFileName then
   Exit;

 Result := -1;
end;
So speichere ich zuvor in die Liste wenn diese erstellt wird
Delphi-Quellcode:
// Record erzeugen mit New()
// ...
List.AddObject(aFileListEntry.sFileName, Pointer(aFileListEntry));
PFileListEntry ist ein Rekord mit ein paar Informationen wie Dateiname und Attributen usw.

Diese Prüfung "IndexOfListObjects" wird bei jeder Iteration von "Liste 1" durchgeführt.
Das dauert relativ lange. Kann man das nicht irgendwie verschnellern?

Geändert von a.def ( 7. Jan 2017 um 15:42 Uhr)
  Mit Zitat antworten Zitat