大佬教程收集整理的这篇文章主要介绍了delphi – 将数据库中的RTF文本加载到TRichEdit中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在表单上我们使用TRichEdit,它显示从MSSQL数据库中的blob字段中获取的rtf文本.这是它在Delphi 7中的工作方式:
//Get RTF text from Blob field using TADOQuery rtfStream := sql.CreateBlobStream(sql.FieldByName('rtftext'),BmRead) as TMemoryStream; //Load into TRichEdit RichEdit.Plaintext := false; RichEdit.Lines.LoadFromStream(rtfStream);
这将在TRichEdit组件中按预期显示RTF,但Delphi 2010中的相同代码将RTF显示为纯文本,每个字符之间带有选项卡.我认为这与从Ansi到Unicode的变化有很大关系,但我没有任何运气来纠正这个问题.
任何有助于此工作的帮助将非常感激.谢谢
用于加载rtf文本:
//Get the data from the database as AnsiString rtfString := sql.FieldByName('rtftext').AsAnsiString; //Write the String into a stream stream := TMemoryStream.Create; stream.Clear; stream.Write(PAnsiChar(rtfString)^,Length(rtfString)); stream.Position := 0; //Load the stream into the RichEdit RichEdit.Plaintext := false; RichEdit.Lines.LoadFromStream(stream); stream.Free;
要保存rtf文本:
//Save to stream stream := TMemoryStream.Create; stream.Clear; RichEdit.Lines.SaveToStream(stream); stream.Position := 0; //Read from the stream into an AnsiString (rtfString) if (stream.Size > 0) then begin SetLength(rtfString,stream.SizE); if (stream.Read(rtfString[1],stream.SizE) <= 0) then raise EStreamError.CreateFmt('End of stream reached with %d bytes left to read.',[stream.Size]); end; stream.Free; //Save to database sql.FieldByName('rtftext').AsAnsiString := rtfString;
这花了我太长时间才弄明白:)我想我已经学到了一件事……如果在Delphi 2010中出现问题,它通常与unicode有关;)
以上是大佬教程为你收集整理的delphi – 将数据库中的RTF文本加载到TRichEdit中全部内容,希望文章能够帮你解决delphi – 将数据库中的RTF文本加载到TRichEdit中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。