Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#2

Re: TFileStream - EOutOfMemory

  Alt 11. Feb 2008, 23:44
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.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat