Hallo zusammen,
ich möchte in einer Datei mehrere RTF Texte speichern. Leider habe ich mit den Streams so meine Probleme.
Es folgt meine Idee:
Delphi-Quellcode:
// Header enthält die Eigenschaften des folgenden RTF Textes
type TTextHeader = record
Index: Word; // Identifier
Name: ShortString; // Name für den RTF-Text
Size: Cardinal; // Größe des RTF-Textes der folgt
end;
const RESOURCEFILE = 'c:\DataResource.dat';
HEAD_SIZE = SizeOf(THeader);
NTFS_TEXT = 1; // Index für einen Textteil
procedure SaveText(re: TRichEdit; Name: ShortString; Index: Word)
var Header: TTextHeader;
fs: TFileStream;
ms: TMemoryStream;
begin
Header.Index:=Index;
Header.Name:=Name;
ms:=TMemoryStream.Create;
re.Lines.SaveToStream(ms);
ms.Position:=0;
Header.Size:=ms.Size;
fs:=TFileStream.Create(RESOURCEFILE,fmCreate);
fs.WriteBuffer(header,HEAD_SIZE);
fs.WriteBuffer(ms,ms.Size);
fs.Free;
ms.Free;
end;
procedure ReadText(re: TRichEdit; SearchIndex: Word);
var Header: TTextHeader;
fs: TFileStream;
ms: TMemoryStream;
begin
fs:=TFileStream.Create(RESOURCEFILE,fmOpenRead or fmShareDenyNone);
while(fs.Position<fs.Size) do
begin
fs.Read(Header,HEAD_SIZE);
if Header.Index = SearchIndex then break;
fs.Seek(Header.Size,soFromCurrent);
end;
if Header.Index = SearchIndex then
begin
ms:=TMemoryStream.Create;
ms.SetSize(Header.Size);
ms.CopyFrom(fs,Header.Size);
re.Lines.LoadFromStream(ms);
ms.free;
end;
fs.free;
end;
So jetzt bin ich mal gespannt, ob jemand von euch den Fehler sieht.
Danke im vorraus