我就这个问题给你一个简短的想法。
备注:[
它来自使用某些 rtf 格式代码从 word 或 Outlook 粘贴的注释。
似乎导致“便笺”的那些是/f0protect (或非常相似的东西)在编码上的位置。
所有引起问题的问题都在注释页面的某个地方。
解决方法是打开基表记录,找到记录并显示备注字段。
从基表记录中剪切/删除注释并将它们粘贴到 Word 或记事本中(取决于数量)。对 rtf 编码进行大量查找和替换。并将注释重新复制回基表记录中。
]
对于这个问题,我想到了三件事。
1. 问题可能出在 RTF 代码上。
2.缓冲区或内存。
3. TRichEdit 控件。
我希望这个解释对我有所帮助。
提前感谢您的帮助。
最佳答案
首先,我将重新表述您的问题,因为在它当前的化身(编号列表)中,它不容易回答。我考虑过实际编辑您的问题,但这可能太苛刻了。我这样做只是因为您是该网站的新手。如果您不是新手,我会简单地发表评论,询问“有什么问题?”
这就是我认为问题应该是这样的:
TRichEdit 对某些特定 RTF 的行为不端
我正在根据数据库中的数据生成一些 RTF 并将其加载到 TRichEdit 控件中。大多数情况下它工作正常,但在某些情况下,生成的 RTF 会导致 TRichEdit 行为不端:它显示 RTF 很好,但是当移动到新记录时,TRichEdit 只是拒绝加载新文本!它不会抛出异常,但会从计算机中听到错误提示音。
一些背景知识:在 TRichEdit 中加载的文本长达数千行,不是可以轻松附加到此消息的内容。此 RTF 由较小的 RTF 构建而成,从 Microsoft Outlook 或 Microsoft Word 复制粘贴。显然错误发生在 /f0protect
(或与此非常相似的东西)可以在来自 Outlook 或 Word 的 RTF 位中找到。进入数据库并删除这些标记可以解决问题,但我需要一个更好的解决方案。
我不确定问题可能是什么。我认为它是其中之一:
现在我的回答是:
关于 RTF 格式的一些背景知识。首先,它是一种不断修订的 Microsoft 控制格式。您几乎可以将任何 Word 文档保存为 RTF 格式,然后在 Word 中重新加载它并让它看起来一样。这并不意味着您可以将任何 RTF 加载到 WordPad 中并让它看起来与 Word 中的完全一样!微软太聪明了,不会犯这样幼稚的错误。写字板只是 Microsoft Rich Text Controll(就像 TRichEdit)的包装。这意味着 TRichEdit 可以做的事情是有限制的。
其次,RTF 格式不是上下文无关的:您不能指望简单地附加两个 RTF 和平并获得有效的 RTF! RTF 文档应该以标题开头,然后是文档区域。如果你附加两个 RTF 的和平,你会得到两个标题,我认为结果是未定义的。
您可能是对的,问题是您提到的三个问题之一。令人高兴的是它很容易测试,抛出一个消除过程:
其他建议:
/f0protect
不是有效的 rtf! 关于Delphi 7,TRichedit,被 RTF 编码困住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518008/