Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Doppelte Einträge in Array filtern

  Alt 2. Nov 2007, 17:00
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
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat