Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listenindex überschreitet das Maximum (https://www.delphipraxis.net/12328-listenindex-ueberschreitet-das-maximum.html)

DSign 25. Nov 2003 13:08


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:
 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;
Nun bekomme ich aber immer den Fehler 'Listenindex überschreitet das Maximum (1)' Ich weiß aber nicht woran das liegt.
Ich hoffe, dass mir helfen kann. Vielen Dank schon einmal für eure Hilfe!

DSign

Treffnix 25. Nov 2003 13:16

Re: Listenindex überschreitet das Maximum
 
Auf den ersten Blick würd ich den Fehler hier vermuten:
Delphi-Quellcode:
ListView1.Items.Item[I2].Caption+ListView1.Items.Item[I2].SubItems.Strings[I2]
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?

DSign 25. Nov 2003 13:22

Re: Listenindex überschreitet das Maximum
 
Zitat:

Zitat von Treffnix
Denke nicht, dass du das wirklich willst, oder?

Genau, das möchte ich nicht. Wie mache ich es denn am Besten, dass ich pro Zeile immer die Caption und das SubItem auslese?

Treffnix 25. Nov 2003 13:29

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:
ListView1.Items.Item[I2].SubItems.Strings[0]]
Wenn es unterschiedlich viele Subitems gibt, dann musst du innerhalb der Zählschleife für die Subitems eine eigene Zählschleife laufen lassen.

DSign 25. Nov 2003 13:42

Re: Listenindex überschreitet das Maximum
 
Hey, das klappt super! :-D

Vielen Dank Treffnix!

Thunderchild 25. Nov 2003 14:31

Re: Listenindex überschreitet das Maximum
 
Tipp für die Schreibfaulen: das .strings kann auch weg gelassen werden.
Delphi-Quellcode:
items[i2].subitems[0]

blender 29. Mär 2008 14:33

Re: Listenindex überschreitet das Maximum
 
Ich habe das gleiche Problem.
Delphi-Quellcode:
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;
Es kommt immer die Meldung: "Listenindex überschreitet das Maximum (-1)". (oder mit anderen Werten)
Lasse

mkinzler 29. Mär 2008 15:28

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 05:53 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