Einzelnen Beitrag anzeigen

DualCoreCpu
(Gast)

n/a Beiträge
 
#16

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 14:50
vielleicht hilft diese Routine:

Delphi-Quellcode:
procedure TCustomSettings.LoadFromStream(const Stream: TStream) ;
 var
   Reader: TReader;
   PropName, PropValue: string;
 begin
   Reader := TReader.Create(Stream, $FFF) ;
   Stream.Position := 0;
   Reader.ReadListBegin;
 
   while not Reader.EndOfList do
   begin
     PropName := Reader.ReadString;
     PropValue := Reader.ReadString;
     SetPropValue(Self, PropName, PropValue) ;
   end;
 
   FreeAndNil(Reader) ;
 end;
Quelle

Grüße
Klaus
Danke Dir, so funktioniert es. Habe eine äquivalente SaveToStream Methode dazu geschrieben.

Es hat allerdings nicht sofort funktioniert, das Lesen schon aber anschließendens Schreiben nicht. EFOpenError für den Writer.

Die Ursache dafür war:

Der Stream wird mit FreeAndNil(Reader) nicht mit frei gegeben. Dies muss mit

Stream.Free nach FreeAndNil(Reader) separat erfolgen.

Dann funktioniert auch das Schreiben in die Datei danach.
  Mit Zitat antworten Zitat