【问题标题】:Keep RichEdit Formatting as a String?将 RichEdit 格式保留为字符串?
【发布时间】:2011-05-15 17:40:46
【问题描述】:

我正在为我声明的自定义类型分配一个字符串,我使用 TTreeViews Node.Data 属性读取/写入该类型。我从节点读取和写入,如下所示:

阅读:RichEdit1.Lines.Text := TMyData(TreeView1.Selected.Data).MyString;

写信:TMyData(TreeView1.Selected.Data).MyString := RichEdit1.Lines.Text;

这非常适合纯字符串,我希望允许将富格式文本存储在字符串中,而不会丢失格式。我设法通过在 RichEdit 上使用 Streams 来做到这一点,因为我正在使用免费软件 Zeos Lib (SQL) 保存我的数据库,我收到未知令牌错误(可能来自 RTF 标签)。如何保存而不出现错误?

更新

按照 Sylverdrag 的建议,我现在已经成功地使用 Base64 编码/解码正确保存它而不会出错。这对我的字符串进行了编码,删除了坏字符。

【问题讨论】:

  • @Craig - 所以你只需要将 RTF 文本保存到数据库中
  • @daemon_x 是的,我已经设法在运行时保存/查看 RTF 文本,但是我无法保存数据库而不出现标记或令牌错误,如果我无法保存/打开,则根本不使用文件。
  • @Craig - 你得到什么错误信息?
  • @daemon_x,当我尝试保存时出现的错误是这样的:SQL 错误:无法识别的令牌:“'????????????????% ???????????????..'"
  • 我不知道 ZEOS Lib 但尝试检查this link. 如果有转换 AsAnsiString 尝试以这种方式使用它。

标签: delphi formatting richedit zeos


【解决方案1】:

查看http://delphi.about.com/od/adptips2003/a/bltip1203_5.htm

(我最初的答案是针对 C# - 误读了您的问题)

【讨论】:

  • 好的,我应该补充一点,我已经尝试过了,但是在保存我的数据库时,Zeos Lib 不喜欢 RTF 保存的标签,我不断收到未知令牌错误等。有趣的是,如果我在编辑器中硬输入了一个 rtf 代码,保存不会抱怨,但无论如何都不会存储格式。
  • @Craig:我通常不在 Delphi 中工作,所以没有代码建议,但是你不能在存储 RTF 字符串之前对它进行 base 64 编码,然后再解码它吗?这应该可以让您摆脱“未知令牌”错误。
  • @Sylverdrag,我已经编辑了我的问题,因为我忘了提及令牌错误。我也发布了一些代码,用于保持 Richedit 格式,但正如我所说,出现未知令牌错误。我将不得不阅读您提到的 Base64 编码,如果我可以使用它来克服令牌错误,那么我的问题就得到了解答,所以感谢您提及这一点。也许 Delphi 程序员可以过来并就您发布的内容提供进一步的建议。我也对你的答案投了赞成票,谢谢。
  • @Sylverdrag,我在保存 sn-p 时实现了 Base64 编码,在读取 sn-p 时实现了 Base64 解码,这有效,但并没有消除保存错误。我尝试创建一个新的sn-p但没有输入任何文本,我可以在那里保存没有问题,似乎是RTF标签与SQL或其他东西冲突。
  • @Craig;谢谢。很高兴你让它工作。有时我们不得不以丑陋的方式做事。只是不要忘记记录它,因为如果其他人需要维护您的代码库,那么理解它将会很糟糕。
猜你喜欢
  • 2021-10-24
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多