![]() |
Listenindex überschreitet das Maximum (9).
Hallo, ich mal wieder :wall:,
ich möchte, dass ein Eintrag aus einer ListBox gelöscht wird. Hier der Code:
Code:
Komischerweise sagt Delphi mir, wenn ich was löschen will:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; begin For i:=0 to ListBox1.Items.Count-1 do If ListBox1.Items[i]=schueler.Text then ListBox1.Items.Delete(i); end; Listenindex überschreitet das Maximum (9). Wenn ich jedoch das hier änder...
Code:
... auf -2, kann ich das letzte nicht löschen :bounce1:
ListBox1.Items.Count-2
Weiß jemand Rat? Danke für alle Antworten, Whoopee. |
Re: Listenindex überschreitet das Maximum (9).
Hm. Wäre die Frage, ob die Delete-Funktion die Count-Property aktualisiert, wenn sie ausgeführt wird. Denn ansonsten würde z.B. die Delete-Funktion aufgerufen, ab da ist dann ein Element weniger in der Liste. Wenn in diesem Fall Count nicht aktualisiert wird, sondenrn noch immer den Ausgangwert liefert, dann schiesst der am Schluss genau 1 Element über das Ende hinaus.
Habe leider gerade kein Delphi da, um das Probem zu testen. Versuche dochmal, mit dem Debugger zu schauen, wie sich der Wert in Count verhält. Gruß Christian |
Re: Listenindex überschreitet das Maximum (9).
Indem du ein Item löschst, veränderst du ja den Wert von Count. Nimm hierzu besser eine while-Schleife:
Delphi-Quellcode:
while ListBox1.Count > 0 do ListBox1.Items.Delete(0);
|
Re: Listenindex überschreitet das Maximum (9).
machs besser so:
wenn schuler.text in ListBox einmal vorkommt:
Delphi-Quellcode:
allgemein Lösung:
with ListBox1.Items do
Delete(IndexOf(schuler.text));
Delphi-Quellcode:
greetz
with ListBox1.Items do
while IndexOf(schuler.text) > -1 then Delete(IndexOf(schuler.text)); mytar :) |
Re: Listenindex überschreitet das Maximum (9).
Wenn du Delete(0) machst, dann wird der erste Eintrag gelöscht, und der vorher zweite Eintrag wird zum ersten (Index 0)!!!
Also:
Delphi-Quellcode:
i := 0;
while i < ListBox1.Items.Count do if ListBox1.Items[i] = schueler.Text then ListBox1.Items.Delete(i) else Inc(i); |
Re: Listenindex überschreitet das Maximum (9).
Zitat:
|
Re: Listenindex überschreitet das Maximum (9).
Zitat:
|
Re: Listenindex überschreitet das Maximum (9).
Zitat:
Zitat:
Zitat:
DANKE @ all :) |
Re: Listenindex überschreitet das Maximum (9).
:gruebel: oder vielleicht gleich ListBox1.Items.Clear; :gruebel:
\\edit: Ach jo, du willst ja selektiv löschen :oops: |
Re: Listenindex überschreitet das Maximum (9).
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
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 by Thomas Breitkreuz