Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ListBox Delete Item (https://www.delphipraxis.net/123726-listbox-delete-item.html)

ecHo89 7. Nov 2008 00:33


ListBox Delete Item
 
Hallo, ganz komische Sache... :gruebel:

ganze einfache Listbox mit 3 Elemente und will alle die Selected sind rauslöschen.
Die Prozedur funktioniert auch, aber ich bekomme immer (auch außerhalb der IDE) die Errormeldung: "Listenindex überschreitet das Maximum 2" (EListError)

Delphi-Quellcode:
var i:integer;
begin
  for i:=1 to 3 do
  begin
   if Listbox1.Selected[i-1] = true then ListBox1.Items.Delete(i-1);
  end;
end;
Gruß

roga 7. Nov 2008 00:41

Re: ListBox Delete Item
 
ListBox.DeleteSelected;

roga

mkinzler 7. Nov 2008 05:30

Re: ListBox Delete Item
 
Und wenn schon in einer Schleife diese umgekehrt laufen lassen

Sharky 7. Nov 2008 06:23

Re: ListBox Delete Item
 
Zitat:

Zitat von mkinzler
Und wenn schon in einer Schleife diese umgekehrt laufen lassen

Und als kurze Erklärung:

Deine Schleife wird dreimal durchlaufen (1 bis 3) und dabei löschst Du jeweils den Eintrag mit dem Index aktuelle Zahl-1.
Wenn nun z. B. der erste Eintrag selektiert ist wird dieser gelöscht. Nun hat deine ListBox nur noch zwei Einträge. Beim dritten Durchlauf deiner Schleife wird aber versucht auf einen, nicht mehr vorhandenen, Eintrag zu zugreifen. Und dann knallt es natürlich.

Wenn Du die Schleife rückwärst laufen lässt kann Dir das nicht passieren.

ecHo89 7. Nov 2008 15:47

Re: ListBox Delete Item
 
ja danke für eure Posts.
Gestern Nacht wars einfach zu lang und mein Kopf blockiert :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 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