![]() |
Listenindex überschreitet das Maximum
Hallo!
Ich habe ein Problem mit der ListView-Komponente. Ich möchte Daten aus einer ListView im Report-Style mit 2 Colums mit dem folgenden Code in ein Memo-Feld einfügen:
Delphi-Quellcode:
Nun bekomme ich aber immer den Fehler 'Listenindex überschreitet das Maximum (1)' Ich weiß aber nicht woran das liegt.
Memo1.Lines.Add(' SetOutPath $INSTDIR');
CurrentDir := ListView1.Items.Item[0].Caption; for I2:=0 to ListView1.Items.Count-1 do begin if ListView1.Items.Item[I2].Caption = CurrentDir then begin Memo1.Lines.Add(' File "'+ListView1.Items.Item[I2].Caption+ListView1.Items.Item[I2].SubItems.Strings[I2]); end else begin NewDir := StringReplace(ListView1.Items.Item[I2].Caption,CurrentDir,'',[rfReplaceAll]); Memo1.Lines.Add(' SetOutPath $INSTDIR\'+NewDir); CurrentDir := NewDir; Memo1.Lines.Add(' File "'+ListView1.Items.Item[I2].Caption+'\'+ListView1.Items.Item[I2].SubItems.Strings[I2]); end; end; Ich hoffe, dass mir helfen kann. Vielen Dank schon einmal für eure Hilfe! DSign |
Re: Listenindex überschreitet das Maximum
Auf den ersten Blick würd ich den Fehler hier vermuten:
Delphi-Quellcode:
Du benutzt für die Subitems den gleichen Zähler wie für das Item. Damit würdest du immer auf das 1. Subitem des 1. Items, das 2. Subitem des 2. Items, das 3.Subitem des 3. Items usw. zugreifen. Denke nicht, dass du das wirklich willst, oder?
ListView1.Items.Item[I2].Caption+ListView1.Items.Item[I2].SubItems.Strings[I2]
|
Re: Listenindex überschreitet das Maximum
Zitat:
|
Re: Listenindex überschreitet das Maximum
Also, wenn jedes deiner Item nur ein Subitem hat, dann kommst du an dieses mit einer 0 statt dem Zähler. z.B. so:
Delphi-Quellcode:
Wenn es unterschiedlich viele Subitems gibt, dann musst du innerhalb der Zählschleife für die Subitems eine eigene Zählschleife laufen lassen.
ListView1.Items.Item[I2].SubItems.Strings[0]]
|
Re: Listenindex überschreitet das Maximum
Hey, das klappt super! :-D
Vielen Dank Treffnix! |
Re: Listenindex überschreitet das Maximum
Tipp für die Schreibfaulen: das .strings kann auch weg gelassen werden.
Delphi-Quellcode:
items[i2].subitems[0]
|
Re: Listenindex überschreitet das Maximum
Ich habe das gleiche Problem.
Delphi-Quellcode:
Es kommt immer die Meldung: "Listenindex überschreitet das Maximum (-1)". (oder mit anderen Werten)
procedure TForm1.OeffnenButton1Click(Sender: TObject);
var Auswahl, i: Integer; begin if opendialog1.Execute then begin Vokabeln := TStringList.Create; NVokabeln := TStringList.Create; Sprachen := TStringList.Create; LetztStand:= TStringList.Create; Vokabeln.LoadFromFile(OpenDialog1.FileName); Auswahl:= ((Vokabeln.Count - 3) div 3); for i := 0 to Auswahl * 2 do begin NVokabeln.Add(Vokabeln.Strings[i]); end; for i := Auswahl * 2 + 1 to Auswahl * 3 do begin LetztStand.Add(Vokabeln.Strings[i]); end; Sprachen.Add(Vokabeln.Strings[Vokabeln.count - 3]); Sprachen.Add(Vokabeln.Strings[Vokabeln.count - 2]); LDatum := Vokabeln.Strings[Vokabeln.count]; end else begin beep; end; end; Lasse |
Re: Listenindex überschreitet das Maximum
Es ist uach null-indiziert. .Count ist also um eines größer wie das Maximum.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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-2025 by Thomas Breitkreuz