我正在尝试将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;谢谢。
发布于 2013-09-11 12:31:34
好的,我找到了解决问题的方法。
起初,我创建了一个简单的测试项目,LoadRichText和SaveRichText工作了,这意味着问题就在我的代码中.
我的流是在一个单独单元的类中声明的。在另一个表单中,我有我的富备注控件,当表单关闭时,数据被保存到流中,我知道的部分起作用了,因为我可以将它保存到文件中并在外部查看它。
问题是,当我创建包含富备忘录的表单时,我从FormCreate事件调用了FormCreate。所以我把它移到FormActivate中,现在它没有出错。
https://stackoverflow.com/questions/18728842
复制相似问题