从RichEdit获取未格式化的文本

5

我有一个Richedit,允许用户在我的应用程序中格式化和查看错误消息。

现在我需要能够将文本(无格式)导出到他们的故障票系统使用的另一个数据库。

我尝试了我能想到的所有PlainText组合,但仍然得到rtf格式。

如何获得纯文本?


1
Andreas和David都是正确的,但David是第一个发现我的错误并且修正了我的文本。感谢两位。 - Steve
3个回答

12

要获取未格式化的文本,只需使用 RichEdit1.Text


+1 因为你更快。我没有勇气坚持自己的信念,所以不得不检查! - David Heffernan
1
@David:但我也检查过了! - Andreas Rejbrand
文本返回了文本和所有格式数据作为文本。我不想要格式数据。 - Steve
2
@Steve:也许你一开始就应该提到这个“细节”? - Andreas Rejbrand
2
您不能使用TRichEdit.Text属性来加载 RTF 格式。要正确加载 RTF,必须使用其中一个TRichEdit.Lines.LoadFrom...()方法,并将TRichEdit.PlainText属性设置为False。然后,您可以使用TRichEdit.Text属性检索未格式化的文本。 - Remy Lebeau
显示剩余4条评论

11

回答你直接提出的问题,Text属性恰好是你要查找的内容。由于某种原因,它在TRichEdit文档中没有显示,但是它从TCustomEdit继承而来。

根据Andreas的回答之后的评论,我认为你需要执行以下操作:

  1. 从数据库中将RTF数据读入到内存流或blob流中。
  2. 调用RichEdit.LoadFromStream方法并传递该流,并确保PlainTextFalse
  3. 然后读取RichEdit.Text以获取未格式化的文本。

目前,你只是将RTF作为纯文本放入控件中。你需要将它作为富文本放入控件中,这就需要用到LoadFromStream方法。


谢谢你们俩。就是这样。我知道它一定是这样的,但因为直接加载到文本中一直都很好用,所以我没有再去看它。 - Steve

2
我用这种方式获取未格式化的文本。
procedure TMainForm.O1Click(Sender: TObject);

begin

if sOpenDialog1.Execute then

sRichEdit1.Lines.LoadFromFile(sOpenDialog1.FileName);

sMemo1.Text := sRichEdit1.Text;

sRichEdit1.Clear;

sRichEdit1.Text := sMemo1.Text;

保存文件有两种选择:

1. 以 .txt 格式保存,文本仍在记事本中,但所有更改只会在富文本编辑器中显示,所以完成所有更改后,您必须将文本移动到记事本中,然后从记事本中保存。

2. 以 .rtf 格式保存,直接从富文本编辑器中保存即可。

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接