2014-10-16 34 views
1

這與以前的問題有關:TMemo cannot handle Unix text (LF as line ending) correctlyTMemo如何處理Mac上的輸入(CRLF)問題?

在Delphi XE上,TMemo只能處理Windows格式的文本(如輸入的CRLF)。 例如這樣的文字:

TEST1 + LF + TEST2

被處理/顯示爲單個文本行:
TEST1
TEST2

我意識到:代替test1test2
這是一個更大的問題,所以我很好奇他/她是如何解決Delphi XE2中的這個問題的(我認爲它具有Mac支持)。有一個類似於TMemo.Lines.TextLineBreakStyle(Lazarus)的屬性?

(我只有自己一個Delphi XE許可。)

+4

XE不支持Mac。你需要XE2。而且這是Mac上完全不同的遊戲,因爲TMemo是完全不同的控制。您可以參考VCL控件,它不過是Windows EDIT控件。在Mac上,它是非本地FMX控件。 – 2014-10-16 18:31:14

+0

對不起。我想說XE2。 – Ampere 2014-10-16 20:19:39

+0

我不清楚你描述的是什麼「問題」。你能描述一下你觀察到的行爲,以及你期望看到什麼樣的行爲嗎? – 2014-10-16 20:32:16

回答

3

正如大衛說,在Delphi Mac應用程序只使用新FireMonkey框架的支持,如在Delphi的早期版本中反對VCL控制。您仍然可以在XE2(及更高版本)中使用VCL,但只能用於開發Windows應用程序。 FireMonkey可用於開發Mac和Windows應用程序。

FireMonkey有記錄控制,就像VCL做,這也有一個文本屬性,所以這行代碼將是既是VCL和FireMonkey(FMX)應用程序完全合法:

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

其中備註1是VCL或FMX備忘錄控件。

然而,VCL控件(如XE4至少)仍不能正常支持#10(LF)換行,但FMX控制確實,在Windows和Mac所以雖然上面的代碼可以在VCL和FMX應用程序中使用,結果會有所不同。

在VCL(Windows)中,你將獲得在備忘錄中以下內容:

Line 1Line 2Line 3 
Line 

凡與FireMonkey在Windows 和/或 Mac的你將得到:

Line 1 
Line 2 
Line 3 
Final Line 

所以答案是FMX的表現與VCL不同,並且方面#10#13#10換行符序列,與平臺無關其中 - 因爲VCL備忘錄行爲保持不變,並且僅在Windows上受支持。