Einzelnen Beitrag anzeigen

Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

TFileStream: String variabler Länge einlesen?

  Alt 15. Aug 2007, 22:28
Hallo,

ich habe mich mal intensiever mit TStream bzw. TFileStream und dem Einlesen von Dateien beschäftigt.
In den betreffenden Datein ist jeweils die Länge des Strings in 4 Byte angegeben und dann folgt der String.
usw.
Also habe ich mir folgenden Code geschrieben:
Delphi-Quellcode:
var Stream: TFileStream; s: String; c: Cardinal;

{...}

repeat
  Stream.Read(c, 4); // Größe einlesen
  SetLength(s, c); // Länge des Strings setzen
  Stream.Read(s, c); // String einlesen
  ShowMessage(s);
until Stream.Position >= Stream.Size;

{...}
Das funktioniert zwar, allerdings beim zweiten Schleifendurchlauf gibt es bei SetLength() eine Zugriffsverletzung.
Zitat:
Zugriffsverletzung bei Adresse 00404694 in Modul 'Project1.exe'. Lesen von Adresse 4C534439.
Hat jemand eine Idee? Was mache ich falsch?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat