Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listbox Einträge vergl., bei Doppelbelegung einen Löschen (https://www.delphipraxis.net/122096-listbox-eintraege-vergl-bei-doppelbelegung-einen-loeschen.html)

Ginko 9. Okt 2008 15:16

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
bernau das berücksichtigt aber nicht das die ersten beiden Stellen unterschiedlich sein können oder ?
Ah sehe 'edit' auch zurück

bernau 9. Okt 2008 15:29

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
OK. Anderer Versuch. Ich würde mit einer Hilfsstrinliste arbeiten

Delphi-Quellcode:

var
 sl:TStringlist;
 stri:String;
begin
  sl:=TStringlist.create;

  // downto verwenden, da items zwischendurch gelöscht werden können
  for a:=sllistbox0.Items.count-1 downto 0 do
    begin
      stri:=listbox0.Items[a][5] +  listbox0.Items[a][7] + listbox0.Items[a][9];

      if sl.indexof(stri)>=0 then
        listbox0.items.delete(a)
      else
        sl.add(stri);

    end;

  sl.free;
end;

Einfach so runtergetippt und nicht getestet

nahpets 9. Okt 2008 15:47

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Hallo,

so, letzter Versuch :P
Delphi-Quellcode:
for i := listbox0.items.count - 1 DownTo 0 Do begin
  for k := i - 1 DownTo 0 Do begin
    if (i < listbox0.items.count - 1)
    and (k < listbox0.items.count - 1) then begin
      if listbox0.items[i][5] + listbox0.items[i][7] + listbox0.items[i][9]
       = listbox0.items[k][5] + listbox0.items[k][7] + listbox0.items[k][9] then begin
        listbox0.items.Delete(k);
      end;
    end;
  end;
end;

Ginko 9. Okt 2008 18:05

Re: Listbox Einträge vergl., bei Doppelbelegung einen Lösche
 
Nach einer kleinen Änderung klappt es nun danke dir nahpets!:thumb:

Delphi-Quellcode:
for i := listbox0.items.count DownTo 0 Do begin
  for k := i - 1 DownTo 0 Do begin
    if (i < listbox0.items.count)
    and (k < listbox0.items.count) then begin
      if listbox0.items[i][5] + listbox0.items[i][7] + listbox0.items[i][9]
       = listbox0.items[k][5] + listbox0.items[k][7] + listbox0.items[k][9] then begin
        listbox0.items.Delete(k);
      end;
    end;
vorher wurde der letzte Eintrag nicht berücksichtigt.
bernau deine Methode hab ich jetzt noch nicht getestet aber, trotzdem danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.
Seite 3 von 3     123   

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