TMemo如何处理Mac上的输入(CRLF)问题?

时间:2014-10-16 18:26:22

标签: delphi delphi-xe2 delphi-xe

这与上一个问题有关:TMemo cannot handle Unix text (LF as line ending) correctly

在Delphi XE上,TMemo只能处理Windows格式的文本(CRLF作为输入)。 例如:

  

test1 + LF + test2

被视为/显示为单行文本:test1test2
而不是:
test1的
test2

我意识到这是一个更大的问题所以我很好奇他们是如何/如果他们在Delphi XE2中解决这个问题(我认为它支持Mac)。有一个类似TMemo.Lines.TextLineBreakStyle(Lazarus)的属性?

(我只拥有Delphi XE许可证。)

1 个答案:

答案 0 :(得分:3)

正如大卫所说,只有使用新的 FireMonkey 框架支持Delphi中的Mac应用程序,而不是以前版本的Delphi中的 VCL 控件。您仍然可以在XE2(及更高版本)中使用VCL,但仅用于开发Windows应用程序。 FireMonkey可用于开发Mac和Windows应用程序。

FireMonkey有一个备忘录控件,就像VCL一样,而且还有一个 Text 属性,所以这行代码在VCL和FireMonkey(FMX)应用程序中都是完全有效的:

Memo1.Text := 'Line 1'#10'Line 2'#10'Line 3'#13#10'Final Line';

Memo1 是VCL或FMX备忘录控件。

但是,VCL控件(至少从XE4开始)仍然不能正确支持#10 (LF)换行符,但FMX控件确实, Windows和Mac都是如此,尽管上面的代码可以在VCL和FMX应用程序中使用,但结果会有所不同。

在VCL(Windows)中,您将在备忘录中获得以下内容:

Line 1Line 2Line 3
Line

与Windows 和/或 Mac上的FireMonkey一样,您将获得:

Line 1
Line 2
Line 3
Final Line

所以答案是FMX的行为与VCL不同,并尊重 #10 #13#10 换行符序列,与平台无关 - 由于VCL备忘录行为保持不变,仅在Windows上受支持。