Dateiarbeit mit TFileStream

Rio

Grünschnabel
Also ich möchte gerne in Delphi 4 TFilestream benutzen um eine Datei, deren Größe ich nicht kenne in einen string-Typ laden:

Mein Programm funktioniert aber so nicht:


procedure TMainForm.Button2Click(Sender: TObject);
var
fs: TFileStream;
s: string;
Len: longInt;


begin
s:='Hello';
fs:= TFileStream.Create('Temp.txt',fmOpenRead or fmShareDenyWrite);
try
fs.Read(Len,SizeOf(Len));
SetLength(s, Len);
fs.Read(PChar(s)^, length(s));
finally
fs.Free;
end;
Edit1.Text:=s;
end;

(Temp.txt ist als test total klein mit text)
Er sagt dann Fehlermeldung: zu wenig Arbeitspeicher


Kann mir jemand helfen
 
Zuletzt bearbeitet:

Maximka

Erfahrenes Mitglied
So wie ich das Beispiel verstehe liest es die Groesse der Datei aus der Datei aus.
und zwar die ersten SizeOf(Len) Bytes werden als Groesse der Datei interpretiert.

Hab leider kein Delphi zur Hand um Dir eine konkrete Loesung anbieten zu koennen.

Da stellt sich nur die Frage ist es in der Datei mit abgespeichert oder nicht.
Im zweitem Fall musst Du die Dateigroesse von woanders her erfahren, TFileStream hat bestimmt eine Methode dafuer.
 

Rio

Grünschnabel
Also wenn jemand mir ein Beispiel zeigen könnte, (wird sicherlich schon jemand mal gemacht haben) wie man den TFileStream - Typ nutzen kann um irgendwelche Dateien mit unbestimmter Länge in einen string (aber nicht begrenzte Kurze Strings wie: string[100] oder so) einzulesen und dann auch den TFileStream - Typ zum Schreiben in Dateien nutzen kann, würde ich mich wirklich sehr freuen - Ansonsten sehe ich keinen so richtigen Sinn in den TFileStreams.

Ich denke mal man muss die Länge der Datei ersteinmal ermitteln (fs vom Typ TFileStream) mit:

fs.Size

..um die länge für den string zu bestimmen. Aber weiter komme ich halt nicht.:(
 
Zuletzt bearbeitet: