Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage Listbox doppelte Eintraege loeschen. (https://www.delphipraxis.net/54768-frage-listbox-doppelte-eintraege-loeschen.html)

lucius 11. Okt 2005 13:38


Frage Listbox doppelte Eintraege loeschen.
 
Nochmals hallo zusammen, ich moechte doppelte Eintraege in einer Listbox loeschen, das geht mit einer Schleife.
Aber die Schleife muss vom Anfang bis Ende der Listbox laufen, ich hab da schon was Code aber der faengt am Ende an und loescht nur 1 doppelter Eintrag obwohl es mehrere gibt.
Delphi-Quellcode:
procedure TMainForm.Button2Click(Sender: TObject);
Var i:integer;
    S:string;
begin
  with listbox1 do
    begin
     i := items.count - 1; //Listbox vom Ende durchgehen
     while i >= 0 do
       begin
         S := items[i];
         while items.indexof(S) <> i do
           begin
             items.Delete(items.indexof(S));
             dec(i);
           end;
         dec(i); //Nächstes item
       end;
    end;
end;
Zitat:

Beilspiel:

Affe6
Affe5
Affe4
Affe5 <--- muestte weg
Affe3
Affe4 <--- muesste weg
Affe6 <--- muestte weg
Kann man so etwas realisieren ?

Matze 11. Okt 2005 13:40

Re: Frage Listbox doppelte Eintraege loeschen.
 
Moin, also bitte :roll: [dp]Listbox doppelte Einträge löschen[/dp]

lucius 11. Okt 2005 13:47

Re: Frage Listbox doppelte Eintraege loeschen.
 
Hi Matze die codes funktionieren nicht richtig, es wird nur der 1e doppelte Eintrag von unten geloescht .
Zitat:

Beilspiel:

Affe6
Affe5
Affe4
Affe5 <--- muestte weg
Affe3
Affe4 <--- muesste weg
Affe6 <--- muestte weg
So muesste es aussehen.

marabu 11. Okt 2005 13:50

Re: Frage Listbox doppelte Eintraege loeschen.
 
Hallo lucius,

aufrufen musst du es mit: KillDuplicates(ListBox.Items);

Delphi-Quellcode:
procedure KillDuplicates(s: TStrings);
var
  iLow, iHigh: integer;
begin
  for iLow := 0 to s.Count - 2 do
    for iHigh := Pred(s.Count) downto Succ(iLow) do
      if s[iLow] = s[iHigh] then
        s.Delete(iHigh);
end;
marabu

flomei 11. Okt 2005 13:52

Re: Frage Listbox doppelte Eintraege loeschen.
 
http://www.delphipraxis.net/internal...=143427#143427
http://www.delphipraxis.net/internal...=435048#435048
http://www.delphipraxis.net/internal...=435056#435056

Die Tipps und Codes funktionieren alle nicht?

Um Gottes Willen, wir brauchen dringend jemanden der mal vorsichtshalber alle Codes die hier stehen testet... :roll:

MfG Florian :hi:

lucius 11. Okt 2005 13:58

Re: Frage Listbox doppelte Eintraege loeschen.
 
Marabu klapt super, auch Matze und Flomei danke fuer eure Antworten.
Schoen das man so gut hier geholfen wird.

Gruss lucius..


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz