![]() |
List Index Out of Bounds
Hi @ all Delphi-Coder.
Ein Kollege von mir wollte einen MP3-Player haben der auf dem PC möglichst wenig Ressourcen verbraucht. Deshalb wollte ich diesen in Delphi für ihn schreiben. Eine Routine sieht so aus:
Delphi-Quellcode:
Wie ihr vielleicht erkennen könnt soll der Code folgendes machen.
procedure TForm1.Button3Click(Sender: TObject);
var i: integer; begin if OpenDialog1.Execute then ListBox1.Items.LoadFromFile(OpenDialog1.Filename); for i:=0 to ListBox1.Count do begin if copy(ListBox1.Items[i],0,1) = '#' then ListBox1.Items.Delete(i); end; end; Er soll eine Datei zeile für Zeile absuchen und jede Zeile die mit # anfängt löschen. Wofür das ist ist egal. Jedenfalls zeigt Delphi an dieser Stelle
Delphi-Quellcode:
immer die Exception: List Index Out of Bounds(X) //x ist eine Zahl
if copy(ListBox1.Items[i],0,1) = '#' then
Woran liegt das? Ach und, die Dateien sind nach dem Weiterlaufen lassen des Programmes trotzdem genauso wie sie es sein sollten in der ListBox. Danke für die Antworten Flips |
Re: List Index Out of Bounds
Hi,
Das erste Item hat Index 0 Das letzte ListBox1.Count -1 Ergo muss es so heissen:
Delphi-Quellcode:
for i:=0 to ListBox1.Count -1 do
|
Re: List Index Out of Bounds
hatt ich ach schon gedacht aber daran liegts ned.
Trotzdem danke. Ps: ich denke es hat was mit der Bedingung zu tun |
Re: List Index Out of Bounds
Nein es liegt unteranderem daran. Aber du musst noch was beachten. Die for-Schleife läuft von, sagen wir 0 bis 9. Jetzt löscht du einen Eintrag jetzt sind es nicht mehr zehn, sondern nur noch neun. Und dann kracht es, weil die Scheife bis 10 Einträge läuft. Du musst die Schleife rückwärtslaufen lassen:
Delphi-Quellcode:
for Listbox1.Itmes.Count - 1 downto 0 do
|
Re: List Index Out of Bounds
geht so nicht.
Delphi-Quellcode:
So gehts :wink:
for i := ListBox1.Items.Count - 1 downto 0 do
|
Re: List Index Out of Bounds
Delphi-Quellcode:
[Error] music.pas(333): For loop control variable must be simple local variable
for Listbox1.Count - 1 downto i:=0 do
Was is das? (ich weiß so gut bin ich auch wieder nicht ;) ) |
Re: List Index Out of Bounds
Vergleich mal deine Zeile mit meiner.
|
Re: List Index Out of Bounds
Zitat:
mfG mirage228 |
Re: List Index Out of Bounds
So ein schnelles Forum hab ich noch nie gesehn.
Thx @ all Das war mein größtes Problem ^^ |
Re: List Index Out of Bounds
So geht es aber:
Delphi-Quellcode:
var
i: Integer; begin for i := Listbox1.Items.Count - 1 downto 0 do ShowMessage(Listbox1.Items[i]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 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