Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Listenindex fehler bei einer Tstringlist (https://www.delphipraxis.net/137283-listenindex-fehler-bei-einer-tstringlist.html)

gangs-taas 17. Jul 2009 21:52


Listenindex fehler bei einer Tstringlist
 
hey,
ich hoffe ihr könnt mir helfen.
also ich habe eine Tstringlist die aus einer txt-datei geladen wird.
nun möchte ich ein paar zeilen in memo-felder einfügen.

das klappt auch noch.

Aber direkt nach dem einfügen bekomme ich die meldung

Listenindex übersteigt Maxmimum(irgendeinezahl)

ich versteh einfach nicht wieso.

muss man die größe von Tstringlisten auch angeben ?!

und wenn ja kann ich irgendwie sagen die sind immer so groß wie die Textdatei ?!

hoffe ihr könnt mir helfen. Danke schonmal.

lg

Nils_13 17. Jul 2009 21:54

Re: Listenindex fehler bei einer Tstringlist
 
Ein kleiner Codeausschnitt wäre ganz gut, aber vermuten was schiefgeht kann ich auch so: Irgendwo wirst Du wohl ein Pred bzw. eine -1 vergessen haben. Daher probiert er auf einen nicht vorhandenen Stringlist-Eintrag zuzugreifen und da bis vor diesen alles im Memo steht, empfindest Du die Fehlermeldung als unabhängig davon. Aber ist nur eine Vermutung, ohne Code schwierig zu sagen.

gangs-taas 17. Jul 2009 22:20

Re: Listenindex fehler bei einer Tstringlist
 
hier der code müsst ihr nicht alles durchlesen ist oft ähnlich nur mit anderen Tagen

Delphi-Quellcode:
procedure TForm1.InDieMemoFelderSchreiben(var Textdatei,Textdatei2: String);
var
  zv : integer;
  zv2 :integer;
  Pruefstring : String ;
begin
  zv := 0;
  zv2 := 0;
  if FileExists(Textdatei) and FileExists(Textdatei2) then begin
    Zwischenspeicher.LoadFromFile(Textdatei);
    Zwischenspeicher2.LoadFromFile(Textdatei2);
  end
  Pruefstring := Zwischenspeicher[Zv];
  If Pruefstring = 'Montag' Then  begin
    Label1.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
  end;
  Pruefstring := Zwischenspeicher[Zv];
  While not (PruefString = 'Dienstag') do begin
    Memo1.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'Dienstag' Then  begin
    Label2.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Mittwoch') do begin
    Memo2.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  If Pruefstring = 'Mittwoch' Then  begin
    Label3.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Donnerstag') do begin
    Memo3.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'Donnerstag' Then  begin
    Label4.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Freitag') do begin
    Memo4.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'Freitag' Then  begin
    Label5.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Samstag') do begin
    Memo5.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'Samstag' Then  begin
    Label6.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Sonntag') do begin
    Memo6.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'Sonntag' Then  begin
    Label7.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Ende') do begin
    Memo7.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  If Pruefstring = 'Ende' Then  begin
    Label8.Caption := Zwischenspeicher2[Zv2];
    inc(Zv2) ;
    Pruefstring := Zwischenspeicher2[Zv2];
  end;
  While not (PruefString = 'Dienstag') do begin
    Memo8.Lines.Add(Zwischenspeicher2[Zv2]);
    inc(Zv2);
    Pruefstring := Zwischenspeicher2[Zv2];
  end;
  end;
  end;
end;
[edit=Sharky]Neu gesendet damit es neu in den aufbereitet wird. Mfg, Sharky[/edit]

omata 17. Jul 2009 22:23

Re: Listenindex fehler bei einer Tstringlist
 
In welcher Zeile tritt der Fehler auf?

Luckie 17. Jul 2009 22:24

Re: Listenindex fehler bei einer Tstringlist
 
Puh. Etwas Quellcodeformatierung könnte wohl nicht schaden. :?

gangs-taas 17. Jul 2009 22:26

Re: Listenindex fehler bei einer Tstringlist
 
Der fehler kommt wenn Prüfstring 'Dienstag' ist also ganz unten ...

und beide Tstringlisten entahlten genügend einträge ...

gangs-taas 17. Jul 2009 22:30

Re: Listenindex fehler bei einer Tstringlist
 
ps. wieso macht der den quelltext hier oben eigendlich nicth farbig ?

müpsste nicht z.b. das Procedure Blau sein ?!

wenn andere quelltexte einfügen ist das auch so aber bei mir irgendwien icht wieso ?!

omata 17. Jul 2009 22:30

Re: Listenindex fehler bei einer Tstringlist
 
Setze einen Breakpoint und schau dir Zeile für Zeile an, was passiert. Der Fehler sitzt meist vor dem Gerät. Dadurch, dass der Fehler kommt sind garantiert nicht genug Zeilen in deiner Datei. Testweise kannst du ja auch einfach mal ein paar mehr eintragen.
Versuch einfach rauszufinden, an welcher Stelle die Realität und deine Gedankenwelt nicht mehr zusammenpassen. Sprich: benutze den Debugger.

gangs-taas 17. Jul 2009 22:34

Re: Listenindex fehler bei einer Tstringlist
 
also ich habe in meiner Datei2 die also auch in Zwischenspeicher2 geladen wird

Montag
dann ein Termin
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
Sonntag


und er soll montag + termin laden und wenn prüfstring Dienstag ist dann nicht mehr.
also es sind genügend zeilen im Tstringlist da....


und wo der Fehler kommt zeig ich euch oben im quelltext okay ?!

gangs-taas 17. Jul 2009 22:41

Re: Listenindex fehler bei einer Tstringlist
 
nein also hab das mit F7 überprüft

er arbeitet die ganz schleife ab ABER nachdem er ganz unten angekommen ist springt er irgednwie wieder hoch
er springt bis hier

Delphi-Quellcode:
   While not (PruefString = 'Mittwoch') do begin
    Memo2.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
und dann gibt er einen fehler ...

aber wieso springt er wieder hoch ?!
versteht ihr das ?!

gangs-taas 17. Jul 2009 22:43

Re: Listenindex fehler bei einer Tstringlist
 
okay
ihr könnt aufhören zu suchen..

es lang dadran, dass ich die End; falsch gesetzt hatte ...


danke trotzdem ^^

omata 17. Jul 2009 22:43

Re: Listenindex fehler bei einer Tstringlist
 
Da wir nicht wirklich wissen, was du da vorhast...

Rücke erstmal deinen Quellcode richtig ein, nur so kannst du ihn richtig verstehen...
Delphi-Quellcode:
procedure TForm1.InDieMemoFelderSchreiben(var Textdatei,Textdatei2: String);
var
  zv : integer;
  zv2 :integer;
  Pruefstring : String ;
begin
  zv := 0;
  zv2 := 0;
  if FileExists(Textdatei) and FileExists(Textdatei2) then begin
    Zwischenspeicher.LoadFromFile(Textdatei);
    Zwischenspeicher2.LoadFromFile(Textdatei2);
  end
  Pruefstring := Zwischenspeicher[Zv];
  If Pruefstring = 'Montag' Then  begin
    Label1.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
  end;
  Pruefstring := Zwischenspeicher[Zv];
  While not (PruefString = 'Dienstag') do begin
    Memo1.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'Dienstag' Then  begin
    Label2.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Mittwoch') do begin
    Memo2.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
    If Pruefstring = 'Mittwoch' Then  begin
      Label3.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Donnerstag') do begin
      Memo3.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'Donnerstag' Then  begin
      Label4.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Freitag') do begin
      Memo4.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'Freitag' Then  begin
      Label5.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Samstag') do begin
      Memo5.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'Samstag' Then  begin
      Label6.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Sonntag') do begin
      Memo6.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'Sonntag' Then  begin
      Label7.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Ende') do begin
      Memo7.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
      If Pruefstring = 'Ende' Then  begin
        Label8.Caption := Zwischenspeicher2[Zv2];
        inc(Zv2) ;
        Pruefstring := Zwischenspeicher2[Zv2];
      end;
      While not (PruefString = 'Dienstag') do begin
        Memo8.Lines.Add(Zwischenspeicher2[Zv2]);
        inc(Zv2);
        Pruefstring := Zwischenspeicher2[Zv2];
      end;
    end;
  end;
end;
Das mit den Schleifen würde ich nochmal überdenken. Führe die Schleife solange durch, wie etwas nicht eintrifft, Nichts ist auch <> 'Dienstag' oder 'Ende'. Nirgends ist eine Prüfung vorhanden, die kontrolliert, ob man die Zeilenanzahl einer Stringliste überschritten hat, genau dann knallt es.

gangs-taas 17. Jul 2009 22:46

Re: Listenindex fehler bei einer Tstringlist
 
ja hat sich ja schon geklärt

lag an den komisch gesetzten Ends


ich hab das oben doch auch eingerückt ?!

nur wieso sind bei dir manche sachen Blau und bei mir nicht ?!

Luckie 17. Jul 2009 23:03

Re: Listenindex fehler bei einer Tstringlist
 
Zitat:

Zitat von gangs-taas
lag an den komisch gesetzten Ends

Und da slag daran, dass du ihn nicht gescheit formatiert hast.

Zitat:

ich hab das oben doch auch eingerückt ?!
Ja, jetzt hier im Forum, aber auch in der IDE?

gangs-taas 18. Jul 2009 09:33

Re: Listenindex fehler bei einer Tstringlist
 
ne da ist er nicht eingerückt ^^

kann ich ja noch machen :oops: :oops: :oops:



undwieso habt ihr iher im forum z.b. if blau und ich da oben nicht ?!

Satty67 18. Jul 2009 10:09

Re: Listenindex fehler bei einer Tstringlist
 
Zitat:

Zitat von gangs-taas
undwieso habt ihr iher im forum z.b. if blau und ich da oben nicht ?!

Das passier sporadisch jedem hier mal... den genauen Grund, warum manchmal die Farben nicht gezeichnet werden und quasi nur "Code" statt "Delphi-Code" verwendet wird, kenne ich auch nicht.

gangs-taas 18. Jul 2009 12:19

Re: Listenindex fehler bei einer Tstringlist
 
weil bei mir ist das in letzter zeit nur noch ohne farben also nur code ....

Sharky 18. Jul 2009 14:42

Re: Listenindex fehler bei einer Tstringlist
 
Zitat:

Zitat von Satty67
...den genauen Grund, warum manchmal die Farben nicht gezeichnet werden und quasi nur "Code" statt "Delphi-Code" verwendet wird, kenne ich auch nicht.

Gelegentlich macht der parser wohl einen "fehler" die Daten werden aber nicht bei jedem Seitenaufruf neu erzeugt sonder aus dem DP eigenen Cashe geholt. Ich habe den Betrag neu erzeugen lassen und jetzt stimmt es auch mit der Anzeige.

gangs-taas 19. Jul 2009 12:02

Re: Listenindex fehler bei einer Tstringlist
 
wie lässt man den den beitrag neu erzeugen ?!
oder kann das nur ein Moderator ?!

TBx 19. Jul 2009 12:11

Re: Listenindex fehler bei einer Tstringlist
 
Der Beitrag wird durch ein Edit bereits im Cache neu erzeugt, kannst Du also auch selbst tun.

gangs-taas 19. Jul 2009 12:21

Re: Listenindex fehler bei einer Tstringlist
 
okay

semo 19. Jul 2009 13:46

Re: Listenindex fehler bei einer Tstringlist
 
Delphi-Quellcode:
if FileExists(Textdatei) and FileExists(Textdatei2) then begin
  Zwischenspeicher.LoadFromFile(Textdatei);
  Zwischenspeicher2.LoadFromFile(Textdatei2);
end
Was ist wenn eine der beiden Dateien leer ist? Oder eine Datei nicht existiert?
Dann knallt es sofort beim Zugriff in der nächsten Zeile...
Also am besten noch abfragen ob
Delphi-Quellcode:
if (Zwischenspeicher.Lines.Count = 0) or (Zwischenspeicher2.Lines.Count = 0) then
  DoSomething or Exit for instance;

gangs-taas 19. Jul 2009 15:37

Re: Listenindex fehler bei einer Tstringlist
 
okay
ich denk drüber nach ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 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