Zitat von
xineohp:
Hi,
ich versuche eine Datei per FileStream auszulesen, aber ich bekomme immer einen EOutOfMemory Error und habe keine Ahnung was ich falsch mache. Die Testdatei ist im übrigen nicht mal ein Kb groß, zu ein einziger Satz.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
Stream: TFileStream; s: String; c: Cardinal;
begin
Stream := TFileStream.Create('C:\test.txt', fmOpenRead );
repeat
Stream.Read(c, 4); // Größe einlesen
SetLength(s, c); // Länge des Strings setzen
Stream.Read(s[1], c); // String einlesen
memo1.Lines.Add(s);
until Stream.Position >= Stream.Size;
Stream.Free;
end;
Was erwartest du denn, was die erste Zeile innerhalb der repeat-Schleife macht ?
Ich habe mich mit Streams nie beschäftigt, aber ich gehe davon aus, daß sie die ersten 4 Zeichen der Datei aus der Datei in die Variable c kopiert.
Wenn z.B. Die Datei mit dem Wort "Hallo" beginnt, dann würde ich erwarten, dann c dann den Wert $6C6C6148 (=1819042120) enthält.
Das ist dann aber nicht die Länge der Zeile.