我正在尝试将 TRichMemo 的内容保存到 TMemoryStream,然后能够将格式化的数据从流中加载回丰富的备忘录中。
问题是LoadRichText
由于某种原因失败了。我知道数据已保存到我的流中,因为我实际上可以将其保存为 rtf 文件并在外部查看。
这基本上就是我所拥有的:
var
FMyStream: TMemoryStream;
保存:
RichMemo1.SaveRichText(FMyStream);
装载:
FMyStream.Seek(0, soBeginning);
if not RichMemo1.LoadRichText(FMyStream) then
raise Exception.Create('Failed to load data from stream.');
正如我所说,数据已保存以正确流式传输,但尝试加载到丰富的备忘录中每次都会遇到我的异常。
可能是什么问题呢?
该LoadRichText
函数的代码是:
function TCustomRichMemo.LoadRichText(Source: TStream): Boolean;
begin
if Assigned(Source) and HandleAllocated then begin
Result := TWSCustomRichMemoClass(WidgetSetClass).LoadRichText(Self, Source);
if not Result and Assigned(RTFLoadStream) then begin
Self.Lines.BeginUpdate;
Self.Lines.Clear;
Result:=RTFLoadStream(Self, Source);
Self.Lines.EndUpdate;
end;
end else
Result := false;
end;
和SaveRichText
代码:
function TCustomRichMemo.SaveRichText(Dest: TStream): Boolean;
begin
if Assigned(Dest) and HandleAllocated then begin
Result := TWSCustomRichMemoClass(WidgetSetClass).SaveRichText(Self, Dest);
if not Result and Assigned(RTFSaveStream) then
Result:=RTFSaveStream(Self, Dest);
end else
Result := false;
end;
谢谢。