![]() |
Problem mit TMemory- bzw. TFilestream
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:
So jetzt bin ich mal gespannt, ob jemand von euch den Fehler sieht.
// 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; Danke im vorraus |
Re: Problem mit TMemory- bzw. TFilestream
Moin Baeuerle,
schau Dir einfach mal eine RTF-Datei im Notepad (oder sonstigem nicht RTF-fähigen Editor) an. |
Re: Problem mit TMemory- bzw. TFilestream
In SaveText ist die Zeile "fs.WriteBuffer(ms,ms.Size);" unsinnig. "ms.Memory^" als erster Parameter ist wohl gemeint.
Alternativ "fs.CopyFrom(ms, 0);". |
Re: Problem mit TMemory- bzw. TFilestream
Hat sich erledigt sollte Sizeof(TTextHeader) nehmen und nicht SizeOf(THeader)
Danke trotzdem :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz