AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dubikate in TStringGrid anzeigen (den Rest rausschmeißen)...
Thema durchsuchen
Ansicht
Themen-Optionen

Dubikate in TStringGrid anzeigen (den Rest rausschmeißen)...

Ein Thema von yankee · begonnen am 14. Aug 2005 · letzter Beitrag vom 14. Aug 2005
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Dubikate in TStringGrid anzeigen (den Rest rausschmeißen

  Alt 14. Aug 2005, 11:27
Sharky, du hast tatsächlich einen Fehler in meiner Routine gefunden und alzaimar hat ihn korrekt erklärt. Vielen Dank euch beiden.

Delphi-Quellcode:
procedure KeepDuplicates(sl: TStringList; allDuplicates: boolean = false);
var
  i, j, dist: integer;
begin
  if not sl.Sorted then
    sl.Sort;
  for i := sl.Count - 1 downto 0 do begin
    j := i; // "j := sl.IndexOf(sl[i])" würde einen sporadischen Fehler produzieren
    while (j > 0) and (sl[j - 1] = sl[j]) do
      Dec(j);
    dist := i - j;
    if (dist = 0) or (not allDuplicates and (dist > 1)) then
      sl.Delete(i);
  end;
end;
Die Routine stammt aus einer Sammlung von Mengenoperationen auf Strings. Benutzt habe ich sie nie, aber der zugehörige Testcode erzeugte seine Testdaten so:

Delphi-Quellcode:
for i := 1 to 20 do
  sl.Add(IntToStr(Random(30)));
Was soll ich sagen, damit produzierte der Code in den ersten Durchläufen korrekte Ergebnisse. Ich werde meinen Testcode wohl etwas verfeinern müssen...

Verlegene Grüße vom marabu

PS: Fehler nach Hinweis von alzaimar korrigiert
  Mit Zitat antworten Zitat
 


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 09:20 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