Wenn in einer Liste aber bereits vorhandene Duplikate stehen (so wie im ursprünglichen Posting angegeben) würde ich die Liste kopieren, dies sollte bedeutend schneller gehen als das Prüfen mit deiner Routine:
Nur so hingetippt ohne zu überprüfen obs auch funktioniert
Delphi-Quellcode:
var
sl1, sl2:TSTringlist;
i:Integer;
t_start, t_stop:integer;
iLow, iHigh: integer;
begin
sl1:= Tstringlist.Create;
sl2:=TStringlist.Create;
try
sl1.loadfromFile('c:\temp\testfîle.lst'); //laden einer Stringliste
//Variante mit neuer Stringliste
sl2.Duplicates:= dupignore;
sl2.Sorted:=true;
t_start := gettickcount;
sl2.Assign(Sl1); //Einträge der zweiten Stringliste zuordnen
t_stop := gettickcount;
showmessage('Variante1; ' +inttostr(t_stop - t_start)+ ' ms');
//Variante2 kopiert aus dem Originalposting
t_start := gettickcount;
for iLow := 0 to sl1.Count - 2 do
for iHigh := Pred(sl1.Count) downto Succ(iLow) do
if sl1[iLow] = sl1[iHigh] then
sl1.Delete(iHigh);
t_stop := gettickcount;
showmessage('Variante2: ' +inttostr(t_stop - t_start)+ ' ms');
finally
sl1.Free;
sl2.Free;
end;