Когда я делаю
RichEdit1.Text := Memo1.Text
виртуальные "разрывы строк" Memo1
магически не преобразуются в разрывы строк (CRLF) в RichEdit
, и они не должны быть. Эти «разрывы строк» не сохраняются в текстовом буфере заметок. Действительно, официальная документация Embarcadero гласит
Установите для WordWrap значение true, чтобы текстовый элемент управления редактирования переносился по правому краю, чтобы он помещался в клиентской области. Упаковка только косметическая. Текст не содержит никаких возвращаемых символов, которые не были введены явно.
Во всяком случае, альтернативный способ сделать
RichEdit1.Lines.Assign(Memo1.Lines);
хотя это сохранит виртуальные разрывы строк, как указано ниже.
Обновление
Скорее всего, в вашем коде есть какая-то странность (ошибка) или вы сформулировали свой вопрос слишком расплывчато. Однако, чтобы устранить риск возникновения проблем с оболочками 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;