我正在构建一个String
被调用FullMemo
的,它将显示在一个TMemoBox
,但问题是我正在尝试像这样制作换行符:
FullMemo := txtFistMemo.Text + '\n' + txtDetails.Text
我得到的是txtFirstMemo
字符的内容\n
,而不是换行符,以及txtDetails
. 我应该怎么做才能使换行符起作用?
解决方案是使用 #13#10 或更好,如 Sertac 建议的 sLineBreak。
FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text;
FullMemo := txtFistMemo.Text + sLineBreak + txtDetails.Text;
一个更独立于平台的解决方案是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('');
采用
FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text
您可以声明如下内容:
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 - 所有蓝点都移动一行
你不要这样换行,你使用符号#13:
FullMemo := txtFistMemo.Text + #13 + txtDetails.Text
+ Chr(13) + 'some more text'#13.
#13 是 CR,#10 是 LF,有时只使用 CR 就足够了,有时(例如在编写文本文件时)使用 #13#10。