AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listenindex überschreitet das Maximum

Offene Frage von "blender"
Ein Thema von DSign · begonnen am 25. Nov 2003 · letzter Beitrag vom 29. Mär 2008
Antwort Antwort
DSign

Registriert seit: 19. Nov 2003
11 Beiträge
 
Delphi 7 Professional
 
#1

Listenindex überschreitet das Maximum

  Alt 25. Nov 2003, 14:08
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
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#2

Re: Listenindex überschreitet das Maximum

  Alt 25. Nov 2003, 14:16
Auf den ersten Blick würd ich den Fehler hier vermuten:
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?
  Mit Zitat antworten Zitat
DSign

Registriert seit: 19. Nov 2003
11 Beiträge
 
Delphi 7 Professional
 
#3

Re: Listenindex überschreitet das Maximum

  Alt 25. Nov 2003, 14:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#4

Re: Listenindex überschreitet das Maximum

  Alt 25. Nov 2003, 14:29
Also, wenn jedes deiner Item nur ein Subitem hat, dann kommst du an dieses mit einer 0 statt dem Zähler. z.B. so:
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.
  Mit Zitat antworten Zitat
DSign

Registriert seit: 19. Nov 2003
11 Beiträge
 
Delphi 7 Professional
 
#5

Re: Listenindex überschreitet das Maximum

  Alt 25. Nov 2003, 14:42
Hey, das klappt super!

Vielen Dank Treffnix!
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#6

Re: Listenindex überschreitet das Maximum

  Alt 25. Nov 2003, 15:31
Tipp für die Schreibfaulen: das .strings kann auch weg gelassen werden.
items[i2].subitems[0]
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
blender

Registriert seit: 25. Feb 2008
95 Beiträge
 
Delphi 7 Personal
 
#7

Re: Listenindex überschreitet das Maximum

  Alt 29. Mär 2008, 15:33
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Listenindex überschreitet das Maximum

  Alt 29. Mär 2008, 16:28
Es ist uach null-indiziert. .Count ist also um eines größer wie das Maximum.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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