在TMemoBox中显示字符串内的换行符

8

我正在构建一个名为FullMemo的字符串,它将在TMemoBox中显示,但问题是我尝试像这样制作换行:

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

我得到的是txtFirstMemo的内容中有一个字符\n,而不是换行符,以及txtDetails的内容。我该怎么做才能让换行符起作用?

重复的 ... https://dev59.com/u3VC5IYBdhLWcg3wjx5d - PA.
如果它是重复的,那为什么答案完全不同呢? - Nathan Campos
5个回答

26

解决方案是使用#13#10或者像Sertac建议的sLineBreak一样更好。

FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text;
FullMemo := txtFistMemo.Text + sLineBreak + txtDetails.Text;

12
也可以使用sLineBreak - Sertac Akyuz
1
使用 sLineBreak 是最佳的方法!! - user497849
1
@Sertac Akyuz - +1个好建议,我没有注意到这样的东西。 - user532231

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('');

3
使用
FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text

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,正如其他人所建议的那样。 例如,Delphi IDe(它是一个Windows应用程序)会对您的文件是否具有正确的换行符(CRLF)非常生气: Delphi XE - 所有蓝点向上移动一行


0

你不应该像这样制造新行,而是使用符号#13:

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

#13 代表回车符,#10 代表换行符,在某些情况下只使用回车符就足够了,但在写文本文件时需要使用 #13#10。


1
在Windows上换行符始终为#13#10(或者更好的做法是像Sertac建议的那样使用sLineBreak)。 - Jens Mühlenhoff
这并不是“总是” #13#10。没有规定说你不能解析#13作为换行符,即使在Windows上也是如此。例如,MessageBox可以很好地接受它。 - himself
@himself - “它只是工作了”并不等同于“它是正确的”。如果Delphi编辑器在调试期间用这样的“半输入”来烦你,那么它会真的很生气。 - Gabriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接