.... uuups, das hab' ich ja voll verpeilt.
Du nimmst am besten ein zweites RichEdit-Control (versteckt) und diese Routine:
Delphi-Quellcode:
uses
RichEdit;
// Hilfsroutine für AddRtfFromStream
function _AddRtfCallback(dwCookie: Longint; pbBuff: PByte;
cb: Longint;
var pcb: Longint): Longint;
stdcall;
begin
try
Result := 0;
pcb := TStream(dwCookie).
Read(pbBuff^, cb);
except
Result := 1;
end;
end;
// Ersetzt die aktuelle Auswahl durch den Inhalt des Streams
procedure AddRtfFromStream(RichEdit: TCustomRichEdit; Stream: TStream);
var EditStream: TEditStream;
begin
EditStream.dwCookie := LongInt(Stream);
EditStream.dwError := 0;
EditStream.pfnCallback := @_AddRtfCallback;
RichEdit.Perform(EM_STREAMIN, SF_RTF + SFF_SELECTION, LongInt(@EditStream));
if EditStream.dwError <> 0
then
raise Exception.Create('
RichEdit operation fehlgeschlagen!');
end;
Und dann gehst du etwa wie folgt vor (Pseudocode):
Delphi-Quellcode:
RichEdit2.LoadFromFile(DieAlteDatei);
RichEdit1.SaveToStream(TemporärerMemoryStream);
AddRtfFromStream(RichEdit2, TemporärerMemoryStream);
RichEdit2.SaveToFile(DieNeueDatei);