AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

doppelte elemente löschen

Ein Thema von glkgereon · begonnen am 29. Okt 2004 · letzter Beitrag vom 13. Nov 2004
 
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#6

Re: doppelte elemente löschen

  Alt 12. Nov 2004, 23:51
moin,

ich an deiner Stelle würde es so machen wie von mir weiter oben beschrieben, und zwar weil, es die Methode mit dem gringsten Aufwand ist Und außerdem macht die Stringlist eh nichts anderes als das, was in dem von dir genannten Thread beschrieben ist:

.AddStrings(Strings: TStings) besteht lediglich aus einer Schleife, die für jedes Element aus Strings die Funktion AddObject(const S: string; AObject: TObject) aufruft. (AddObject ist im Prinzip gleichbedeutend mit der Funktion Add(const S: string). Add(const S: string) ruft nämlich lediglich AddObject mit S und nil auf.)
Diese wiederum überprüft, sofern Sorted=true, mittels der Funktion Find(const S: string; var Index: Integer) ob der String bereits vorhanden ist. Duplicates legt hierbei fest ob, falls dem so ist, ein Fehler aufgerufen wird oder nicht.
Find ist wie folgt implementiert:
Delphi-Quellcode:
function TStringList.Find(const S: string; var Index: Integer): Boolean;
var
  L, H, I, C: Integer;
begin
  Result := False;
  L := 0;
  H := FCount - 1;
  while L <= H do
  begin
    I := (L + H) shr 1;
    C := CompareStrings(FList^[I].FString, S);
    if C < 0 then L := I + 1 else
    begin
      H := I - 1;
      if C = 0 then
      begin
        Result := True;
        if Duplicates <> dupAccept then L := I;
      end;
    end;
  end;
  Index := L;
end;
Wenn du also das ganze schneller machen willst, musst du überprüfen, ob es günstiger ist eine n Elementige Liste zu sortiern und anschließend aufeinanderfolgende Elemente auf Gleichheit zu prüfen oder die Funktion Find n mal auf eine Liste anzuwenden deren Elemente von 0 bis maximal n ansteigen.
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz