Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Datei mit dynamischen Array einlesen

  Alt 18. Feb 2013, 17:21
Zunächst mal verwende überall die Methode ReadBuffer() anstatt Read() :
Delphi-Quellcode:
Strom:=TFileStream.Create(Dateiname, fmOpenRead);
Strom.ReadBuffer(FileHeader, SizeOf(FileHeader));
Falls über das Ende des Streams hinausgelesen wird, wird eine Exception ausgelöst, was ein wichtiger Hinweis ist.
Mann kann auch so arbeiten:
Delphi-Quellcode:
gelesen:=Strom.Read(buffer,sizeof(buffer));
if gelesen<>sizeof(buffer) then showmessage('Weniger Daten als erwartet gelesen');
Und ich traue Deiner Record-Definition nicht.
Aus eigener schlechter Erfahrung ist ein String nicht gleich ein String und ein Word ist nicht gleich ein Word.......

Versuche ungefähr so zu arbeiten:
Delphi-Quellcode:
var
  longintbuffer : array [0..3] of byte;
  
gelesen:=Strom.Read(longintbuffer,sizeof(longintbuffer));
...
plongintbuffer:=@longintbuffer;
..
myrecord.mylongint:=plongintbuffer^;
Sieht zwar sehr wild aus hilft aber bei Typinkompatibilitäten ungemein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat