Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrere Listbox Einträge löschen (https://www.delphipraxis.net/87734-mehrere-listbox-eintraege-loeschen.html)

IngoD7 5. Mär 2007 15:20

Re: Mehrere Listbox Einträge löschen
 
Zitat:

Zitat von Khabarakh
[...] [Pfotos] Code ist vollkommen richtig [...]

Nein (das hatte ich schon im Verlaufe dieses Threads erwähnt).
Wenn das letzte Element der Liste selektiert ist und gelöscht wird, dann ist in seinem Code danach i größer als ListBox.Items.Count. Dann hält die Schleife nicht an und es scheppert beim nächsten Schleifendurchlauf. :!:

Hawkeye219 5. Mär 2007 15:52

Re: Mehrere Listbox Einträge löschen
 
Hallo Ingo,

vielleicht hat dich nur die unglückliche Formatierung des Quelltextes irritiert. Nach dem Löschen des Elements wird der Schleifenzähler nicht erhöht und die Schleife damit aufgrund der erfüllten Abbruchbedingung beendet.

Gruß Hawkeye

Pfoto 5. Mär 2007 15:54

Re: Mehrere Listbox Einträge löschen
 
Zitat:

Zitat von IngoD7
Zitat:

Zitat von Khabarakh
[...] [Pfotos] Code ist vollkommen richtig [...]

Nein (das hatte ich schon im Verlaufe dieses Threads erwähnt).
Wenn das letzte Element der Liste selektiert ist und gelöscht wird, dann ist in seinem Code danach i größer als ListBox.Items.Count. Dann hält die Schleife nicht an und es scheppert beim nächsten Schleifendurchlauf. :!:

Also bei mir funktioniert mein Code auch bei Löschung des letzten Elementes in der Liste...
aber egal, Hauptsache, das Problem ist gelöst.

Gruß
Pfoto

IngoD7 5. Mär 2007 16:20

Re: Mehrere Listbox Einträge löschen
 
Zitat:

Zitat von Hawkeye219
Nach dem Löschen des Elements wird der Schleifenzähler nicht erhöht und die Schleife damit aufgrund der erfüllten Abbruchbedingung beendet.

:shock:

Zitat:

Zitat von Pfoto
Also bei mir funktioniert mein Code auch bei Löschung des letzten Elementes in der Liste...

:shock: :shock:

Zitat:

Zitat von Khabarakh
Was habt ihr denn gegen den armen Pfoto, sein Code ist vollkommen richtig - den einzigen kleinen Fehler habt ihr aber übersehen: EListError bei leeren Items.

:pale:
Zitat:

Zitat von IngoD7
Nein (das hatte ich schon im Verlaufe dieses Threads erwähnt).

:oops: :oops:

Ihr habt Recht. Ich nehme alles zurück und behaupte das Gegenteil. :wall: Sorry, Jungs!

Zitat:

Zitat von Hawkeye219
vielleicht hat dich nur die unglückliche Formatierung des Quelltextes irritiert.

Darauf kannst du wetten! Trotzdem schwaches Bild von mir ... :|


//Edit:
Khabarakhs Zitat vervollständigt (Stichwort: Fehler bei leerer Liste), um nicht noch mehr Verwirrung zu stiften.

Kedariodakon 5. Mär 2007 16:33

Re: Mehrere Listbox Einträge löschen
 
Nunja, Pfotos Code ist solange richtig, solange es mindestens ein Item gibt...
Bei einer leeren Liste fällt er mit der Funktion auf die Nase...

Performater und schöner wär es so:
Delphi-Quellcode:
Var i: Integer;
  For i := Listbox1.Items.Count - 1 Downto 0 Do Begin
    If Listbox1.Selected[ i ] Then Listbox1.Items.Delete( i );
  End;
Weil, nur eine einzige Abfrage in der Methode durchgeführt wird und nicht 2 wie bei
Pfoto...
Edit: Und weil diese auch bei leeren Listen funktioniert...

Viel Spass noch :zwinker:

Bye Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 Uhr.
Seite 2 von 2     12   

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