delphi - Delphi将备忘录复制到内存中的问题

  显示原文与译文双语对照的内容
0 0

我将备忘内容复制到内存中组件时出现问题。

我以为会是


Richedit.text := memo.text;

但是,如果使用这里方法,当备忘文本换行到新行( 不是 cr/lf ) 时,to会启动新行,但只包装新行。 richedit也会在备忘录开始一个新行时启动一个新行。

任何人都知道如何将备忘录中的文本复制到RichEditBox中,而备忘录文本包装时不会打破多行。

谢谢

Colin

时间: 原作者:

0 0

当我做的时候


RichEdit1.Text := Memo1.Text

Memo1的虚拟"换行符"不会被奇怪地转换为 RichEdit 中的换行符( CRLF ),并且它们不应该是。 这些"换行符"未存储在备注文本缓冲区中。 事实上,官方的英巴卡迪诺文档状态

将自动换行设置为 true 以使编辑控件在右边距换行,以便它适合工作区。 包装仅为化妆品。 文本不包括未显式输入的任何返回字符。

总之,另一种方法是


RichEdit1.Lines.Assign(Memo1.Lines);

虽然这将保留虚拟行中断,但如下所述。

更新

很可以能你在代码中有一些它的他奇怪的( Bug ),或者用一种模糊的方式描述你的问题。 但是,要消除VCL的任何问题的风险,请尝试以下操作:


procedure TForm4.FormClick(Sender: TObject);
var
 buf: PChar;
const
 MAX_BUF_SIZE = 65536;
begin
 GetMem(buf, MAX_BUF_SIZE * sizeof(char));
 Memo1.Perform(WM_GETTEXT, MAX_BUF_SIZE, buf);
 RichEdit1.Perform(WM_SETTEXT, 0, buf);
 FreeMem(buf);
end;

原作者:
0 0

你可以把 wrap wrap,然后再做作业,然后再把 wrap? 这是一个恶意的黑客,但是如果有些奇怪的行为,它可以能会。

原作者:
...