8

我正在构建一个String被调用FullMemo的,它将显示在一个TMemoBox,但问题是我正在尝试像这样制作换行符:

FullMemo := txtFistMemo.Text + '\n' + txtDetails.Text

我得到的是txtFirstMemo字符的内容\n,而不是换行符,以及txtDetails. 我应该怎么做才能使换行符起作用?

4

5 回答 5

26

解决方案是使用 #13#10 或更好,如 Sertac 建议的 sLineBreak

FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text;
FullMemo := txtFistMemo.Text + sLineBreak + txtDetails.Text;
于 2010-12-22T15:35:07.477 回答
4

一个更独立于平台的解决方案是TStringList.

var
  Strings: TStrings;
begin
  Strings := TStringList.Create;
  try
    Strings.Assign(txtFirstMemo.Lines); // Assuming you use a TMemo
    Strings.AddStrings(txtDetails.Lines);
    FullMemo := Strings.Text;
  finally
    Strings.Free;
  end;
end;

要添加一个空换行符,您可以使用:

Strings.Add('');
于 2010-12-22T15:39:42.060 回答
3

采用

FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text
于 2010-12-22T15:36:02.220 回答
1

您可以声明如下内容:

const 
 CRLF = #13#10; //or name it 'Enter' if you want
 LBRK = CRLF+ CRLF;

在一个公共单元中并在所有程序中使用它。这将非常方便。现在,20 年后,我已经在数千个地方使用了 CRLF!

FullMemo := txtFistMemo.Text + CRLF + txtDetails.Text

重要
在 Windows 中,正确的输入格式是 CRLF,而不仅仅是 CR 或其他人在那里建议的 LF。例如,如果您的文件没有正确的输入 (CRLF),Delphi IDe(这是一个 Windows 应用程序)会非常生气: Delphi XE - 所有蓝点都移动一行

于 2011-01-02T18:26:54.737 回答
0

你不要这样换行,你使用符号#13:

FullMemo := txtFistMemo.Text + #13 + txtDetails.Text
    + Chr(13) + 'some more text'#13.

#13 是 CR,#10 是 LF,有时只使用 CR 就足够了,有时(例如在编写文本文件时)使用 #13#10。

于 2010-12-22T15:35:08.623 回答