Moin Ferby,
das könnte so aussehen, wenn Du nur den Text haben willst:
Delphi-Quellcode:
// schreiben
var
iLen : integer;
fs : TFileStream;
begin
fs := TFileStream.Create(....);
try
iLen := length(RichEdit1.Lines.Text);
fsWrite(iLen,4);
fs.Write(RichEdit1.Lines.Text[1],iLen);
finally
FreeAndNil(fs);
end;
end;
// lesen
var
iLen : integer;
fs : TFileStream;
sBuf : string;
begin
fs := TFileStream.Create(...,fmOpenRead);
try
fs.Read(iLen,4);
SetLength(sBuf,iLen);
fs.Read(sBuf[1],iLen);
RichEdit1.Lines.Text := sBuf;
finally
FreeAndNil(fs);
end;
end;
Nachdem Du den Wert ausgelesen/geschrieben hast, steht der FileStream auf der Länge des nächsten Eintrages.
Du kannst also das, was zwischen try/finally steht der Reihe nach für alle RichEdits ausführen.
Sollen auch die Formatierungen gespeichert werden wird's etwas komplizierter:
Delphi-Quellcode:
// schreiben
var
iLen : integer;
fs : TFileStream;
ms : TMemoryStream;
begin
ms := TMemoryStream.Create;
fs := TFileStream.Create(....,fmCreate);
try
ms.Clear;
RichEdit1.Lines.SaveToStream(ms);
iLen := ms.Position;
fs.Write(iLen,4);
fs.CopyFrom(ms,0);
finally
FreeAndNil(fs);
FreeAndNil(ms);
end;
end;
// lesen
var
iLen : integer;
fs : TFileStream;
ms : TMemoryStream;
begin
ms := TMemoryStream.Create;
fs := TFileStream.Create('c:\temp\riform.txt',fmOpenRead);
try
fs.Read(iLen,4);
ms.Clear;
ms.CopyFrom(fs,iLen);
ms.Position := 0;
RichEdit1.Lines.LoadFromStream(ms);
finally
FreeAndNil(fs);
FreeAndNil(ms);
end;
end;