这与上一个问题有关: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许可证。)
答案 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上受支持。