Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

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

  Alt 14. Aug 2005, 11:28
Wenn Du bei einer TStringList Sorted auf True setzt, dann wird beim IndexOf nicht sequentiell, sondern binär gesucht (binarysearch). Das findet aber nur irgendeinen Eintrag, aber nicht unbedingt den Ersten. Beispiel: Liste = (1,2,2,2,3). Suche nach 2 liefert im ersten Durchgang einen Treffer, nämlich l[2] ='2', das ist aber nicht das erste Auftreten. Deshalb ist die Verwendung des Suchergebnisses als Kriterium für doppelte Einträge bei sortierten Stringlisten (Sorted = True) nur bedingt anwendbar. Im Beispiel vom marabu umgeht er das, indem er von hinten an die Sache rangeht.

Noch eine Anmerkung zum marabu-Verfahren: Man kann die Zeile
j := sl.IndexOf (sl[i]); durch
j := i; ersetzen, da die Liste sortiert ist und j danach sowieso auf das erste Element gesetzt wird.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat