Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zum x-ten: Listenindex außerhalb des gültigen Bereichs (https://www.delphipraxis.net/209685-zum-x-ten-listenindex-ausserhalb-des-gueltigen-bereichs.html)

OsCor 9. Jan 2022 08:16

Delphi-Version: 10.4 Sydney

Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Hallo liebe Helfer,

ähnliche Fragen gibt es hier viele und dennoch habe ich nirgends eine Lösung gefunden:

Delphi-Quellcode:
procedure TForm1.btnReadClick(Sender: TObject);
var Dateipfad, Rest : String;
    i, j, ZAnz : Integer;
    AnzTage : Integer;
const SepNach = ';';
      SepVor = ',';
begin
  Daten := TStringList.Create;
  Dateipfad := 'D:\XXXXXX.CSV';
  Daten.LoadFromFile(Dateipfad);
  ledAnz.Text := IntToStr(Daten.Count);
// Kommas durch Semikola ersetzen und Punkt durch Kommas
  for i := 0 to Daten.Count - 1 do
    begin

  Edit4.Text := Daten[Daten.Count - 1];
Die Stringlist Daten hat die Länge Daten.Count. Also sollte ich in einer Iteration alle Elemente mit den Indizes 0 bis Daten.Count-1 erreichen. In der letzten Zeile des Codefragments lasse ich mir die letzte Zeile der Stringlist ausgeben. Wenn ich aber in der for-Schleife wie dargestellt Daten.Count - 1 benutze, bekomme ich den im Betreff genannten Fehler.
Wenn ich als Schleifenende aber Daten.Count - 2 nehme, gibt es keinen Fehler und als letzte Zeile wird mir (in einem Memofeld) die Zeile ausgegeben, die ich mir im Edit-Feld als Daten[Count-1] ausgegeben habe.

Ich fürchte, ich stehe auf dem Schlauch. Was übersehe/missverstehe ich da?

Oswald

jaenicke 9. Jan 2022 08:56

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
An welcher Stelle kommt denn der Fehler?
Der Fehler wird kaum in den gezeigten Zeilen des Quelltextes auftreten.

zeras 9. Jan 2022 09:10

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Wenn du duch die Daten iterierst sollte das do so aussehen oder?

Delphi-Quellcode:
  for i := 0 to Daten.Count - 1 do
    begin

  Edit4.Text := Daten[i];

Klaus01 9. Jan 2022 09:32

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Zitat:

Zitat von zeras (Beitrag 1500328)
Wenn du duch die Daten iterierst sollte das do so aussehen oder?

Delphi-Quellcode:
  for i := 0 to Daten.Count - 1 do
    begin

  Edit4.Text := Daten[i]; // <-

.. wenn die Zuweisung ausserhalb der for-Schleife passiert, kann es sein, dass i nicht mehr definiert (mit den richtigen Werten belegt) ist.

Grüße
Klaus

Uwe Raabe 9. Jan 2022 09:45

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Zitat:

Zitat von OsCor (Beitrag 1500322)
Was übersehe/missverstehe ich da?

Du prüfst an der Stelle nicht, ob
Delphi-Quellcode:
Daten.Count > 0
ist.

Leider können wir nicht alles sehen, was du zwischen dem
Delphi-Quellcode:
Daten.LoadFromFile
und dem Aufruf von
Delphi-Quellcode:
Daten[Daten.Count - 1]
machst.

OsCor 9. Jan 2022 10:04

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Zitat:

Zitat von jaenicke (Beitrag 1500325)
An welcher Stelle kommt denn der Fehler?
Der Fehler wird kaum in den gezeigten Zeilen des Quelltextes auftreten.

„Eben doch.” wollte ich gerade schreiben. Ich hatte einen Haltepunkt auf die erste Zeile (also das begin) nach dem for-Statement gesetzt. Da gab es den Fehler schon und das hat mich irritiert. Denn als ich den Haltepunkt auf die erste Anweisung innerhalb der Schleife setzte, war die Fehlermeldung plötzlich weg. Warum es schon vorher geklappt hat mit dem Schleifen-Endpunkt Daten.Count - 2 kann ich nicht verstehen.
Aber den Fehler habe ich im Umfeld der Schleife gefunden: Da wo die drei Punkte stehen, habe ich im Code eine Anweisung mit dem an dieser Stelle nicht definierten Index i. Edit: Oder ist der an dieser Stelle definiert, aber außerhalb des Gültigkeitsbereiches? Wahrscheinlich hätte ich die Brille putzen sollen, dann hätte ich gesehen, dass da ein i und keine 1 steht. Also frei nach Shakespeare „Viel Lärm um (fast) Nichts” Sorry!

Also: Scheinbar wurde der Fehler angezeigt, bevor die fehlerhafte Zeile erreicht wurde.

Das Fettgedruckte kann mir vielleicht jemand erklären.

Gruß
Oswald

mmw 9. Jan 2022 10:06

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Hallo,

gelöscht.
Gruß

mmw 9. Jan 2022 20:14

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Das wäre eine vage Vermutung wenn ich jetzt eine Textdatei lade tritt kein Fehler auf.

Gruß

himitsu 10. Jan 2022 01:24

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
"Daten" wird nicht zufällig innerhalb der Schleife verändert?
> z.B. Zeilen gelöscht


Ja, es kann manchmal vorkommen, dass der Debugger in der Position verrutscht und der Fehler eigentlich in dem Befehl vor dem angezeigten Stopp liegt.

hoika 10. Jan 2022 05:12

AW: Zum x-ten: Listenindex außerhalb des gültigen Bereichs
 
Hallo,
hast Du vielleicht zufällig das Daten[i] als überwachten Ausdruck dringehabt?

Und solltest Du das i außerhalb der Schleife benutzt haben,
muss doch eine Compilerwarnung gekommen sein.?


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