Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi List Index Out of Bounds (https://www.delphipraxis.net/40571-list-index-out-bounds.html)

Flips 17. Feb 2005 19:16


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:
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;
Wie ihr vielleicht erkennen könnt soll der Code folgendes machen.
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:
     if copy(ListBox1.Items[i],0,1) = '#' then
immer die Exception: List Index Out of Bounds(X) //x ist eine Zahl

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

toms 17. Feb 2005 19:18

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

Flips 17. Feb 2005 19:25

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

Luckie 17. Feb 2005 19:31

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

Rastaman 17. Feb 2005 19:35

Re: List Index Out of Bounds
 
geht so nicht.

Delphi-Quellcode:
for i := ListBox1.Items.Count - 1 downto 0 do
So gehts :wink:

Flips 17. Feb 2005 19:38

Re: List Index Out of Bounds
 
Delphi-Quellcode:
for Listbox1.Count - 1 downto i:=0 do
[Error] music.pas(333): For loop control variable must be simple local variable


Was is das?
(ich weiß so gut bin ich auch wieder nicht ;) )

Luckie 17. Feb 2005 19:39

Re: List Index Out of Bounds
 
Vergleich mal deine Zeile mit meiner.

mirage228 17. Feb 2005 19:40

Re: List Index Out of Bounds
 
Zitat:

Zitat von Luckie
Vergleich mal deine Zeile mit meiner.

Sie sind verschieden - aber sie gehen beide nicht :mrgreen:

mfG
mirage228

Flips 17. Feb 2005 19:41

Re: List Index Out of Bounds
 
So ein schnelles Forum hab ich noch nie gesehn.
Thx @ all

Das war mein größtes Problem ^^

Luckie 17. Feb 2005 19:44

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 09:27 Uhr.
Seite 1 von 2  1 2      

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