Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EReadError bei Reader.ReadListBegin (https://www.delphipraxis.net/64275-ereaderror-bei-reader-readlistbegin.html)

EccoBravo 1. Mär 2006 16:32


EReadError bei Reader.ReadListBegin
 
Hallo habe mal wieder ein Problem.
Habe bestimmt 1000x diese Sequenz programmiert und vorher nie Schwierigkeiten damit gehabt,
Ich will beim Starten einer Anwendung ein Konfigurationsfile laden und er macht dabei einen Laufzeitfehler :

Delphi-Quellcode:
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure TForm1.FormCreate(Sender: TObject);
var
    Stream : TStream;
    Reader : TReader;
    i,j   : integer;
    Setup : array[1..150] of string;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
begin
    Stream:=TFileStream.Create(SetupVerzeichnis+SetupDatei,fmOpenRead);
    Reader:=TReader.Create(Stream,2048);
    Reader.ReadListBegin;  // ** und hier macht er einen ExceptionFehler
    for i := 1 to 150 do
    begin
        Setup[i]:=Reader.ReadStr;
    end;
    Reader.ReadListEnd;
    Reader.Free;
    Stream.Free;

    pGrad:= StrToInt(Setup[3]);
    for i := 0 to 9 do
    begin
        pKoef[i]:= StrToFloat(Setup[4+i]);
    end;
    for i := 1 to 26 do
    begin
        EFilm.Werte[1,i]:= StrToFloat(Setup[20+i]);
        EPlan.Werte[1,i]:= STrToFloat(Setup[70+i]);
        Werte[i]:= StrToFloat(Setup[120+i]);
    end;

end;

Die Fehlermeldung lautet:
"Im Projekt EB_Project.exe ist eine Exception de Klasse EReadError aufgetreten. Meldung: 'Ungültiger Eigenschaftswert'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen."

Kennt jemand soetwas und/oder hat jemand eine Idee?

Danke

E. B.

EccoBravo 1. Mär 2006 17:52

Re: EReadError bei Reader.ReadListBegin - anders gefragt..
 
Hallo hier bin ich nochmal und möchte die Frage anders stellen:

Wie muß die mit TWriter.WriteString abgelegte String-Variable sein,
daß TReader.ReadString diese als vaString / vaLString erkennt, und nicht EReadError auslöst?

Habe die Schreib - und Lese -Routinen auch mit Integer und Single versucht, hier auch EReadError bekommen - irgend was ist faul!
Ich habe sonst meinen Datenkram über Streams gemacht und nie Probleme gehabt!!
Bin verärgert, da bleibt man bei soch banalem Zeug hängen.

Ich will schon meinen weiteren Dateikram schon über Streams machen, weil das auch mein bisheriger Standard war - "Streams of StringArray's".

Danke für Hilfe

E. B.

marabu 1. Mär 2006 18:40

Re: EReadError bei Reader.ReadListBegin
 
Hallo E.

der von dir beschriebene Fehler wird wohl von dir beim Erstellen der Datei verursacht. Vermutlich wird die Methode WriteListBegin nicht korrekt ausgeführt. Ansonsten schlage ich noch folgende Änderung vor:

Delphi-Quellcode:
// ...
// ich gehe bei Setup von einer TStringList aus
Setup.Clear;

Reader := TReader.Create(Stream,2048);
with Reader do
begin
  ReadListBegin;
  while not EndOfList do
    Setup.Add(ReadString); // nicht ReadStr() benutzen, siehe OH
  ReadListEnd;
  Free;
end;

// ...
Grüße vom marabu

EccoBravo 1. Mär 2006 19:04

Re: EReadError bei Reader.ReadListBegin
 
Danke,

was kann ich denn zum richtigen funktionieren von WriteListBegin tun?

E. B.

marabu 1. Mär 2006 20:22

Re: EReadError bei Reader.ReadListBegin
 
Keine Ahnung was du beim Schreiben eventuell falsch machst - ich kenne deinen Code ja nicht.

marabu


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