【问题标题】:Newline Inside a String To Be Shown At a TMemoBox要在 TMemoBox 中显示的字符串内的换行符
【发布时间】:2011-05-29 11:36:54
【问题描述】:

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

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

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

【问题讨论】:

标签: string delphi variables lazarus memo


【解决方案1】:

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

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

【讨论】:

  • 也可以使用sLineBreak。
  • 使用 sLineBreak 是最好的方法!!
  • @Sertac Akyuz - +1 很棒的提示,我没有注意到这样的事情
【解决方案2】:

更独立于平台的解决方案是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
    

    【讨论】:

      【解决方案4】:

      你可以这样声明:

      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 - All blue dots are shifted with one line up

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

        • Windows 上的换行符总是#13#10(或者更好的 sLineBreak,如 Sertac 建议的那样)。
        • 这不是“总是”#13#10。没有规则说您不能解析 #13 的换行符,即使在 Windows 上也是如此。例如,MessageBox 接受它就好了。
        • @himself - “它只是工作”不等于“它是正确的”。如果Delphi 编辑器用这种“半进”的方式和你闲聊,调试的时候真的会气死你。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-27
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        相关资源
        最近更新 更多