Hi
Ich suche in einem Array of String (vereinfacht) und bekomme als Ergebnis nen Array of ^String:
SuchErgebnis: Array of ^String;
in diesem können allerdings Einträge doppelt vorkommen.
Ich suche nun die beste (und schnellste!) Möglichkeit doppelte Einträge zu finden.
Soll heißen zum Schluss möchte ich ein
EndErgebnis: Array of ^String
haben der keine doppelten Einträge hat!
Bisher mache ich das so:
Delphi-Quellcode:
var Gefunden: Boolean;
I, J: Cardinal;
begin
SetLength(EndErgebnis, 1);
EndErgebnis[0] := Addr(SuchErgebnis[0]^); // SuchErgebnis hat IMMER mindestens einen Eintrag
for I := 1 to high(SuchErgebnis) do
begin
gefunden := false;
for J := 0 to high(EndErgebnis) do
if EndErgebnis[J]^ = SuchErgebnis[I]^ then
begin
gefunden := True;
break;
end;
if not gefunden then
begin
SetLength(EndErgebnis, Succ(Length(EndErgebnis)));
EndErgebnis[high(EndErgebnis)] := Addr(SuchErgebnis[I]^);
end;
end; // for I
end;
Bei 25000 Suchergebnissen dauert das ca 1-2 Sekunden.
Hat jemand ein Optimierungsvorschlag?
mfg.Dominik