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?