2010-06-17 78 views
4

德爾福2011將允許編譯也可以在Mac OS上運行的應用程序。 (注意:在Delphi-XE預覽版出來之前我寫了這句話,當時大家都在談論ProjectX)。將win32 VCL應用程序升級到跨平臺

認爲可以「遷移到跨平臺」的win32應用程序是否現實?

第三方組件供應商是否會使其庫跨平臺,或者這實際上是不可能的?

我用下面的第三方組件:

的DevExpress - UI

devart - DAC

報表製作工具 - UI

Steema /於TeeChart - UI

我不希望有一個能幫我完成工作的巫師,我只想更好地瞭解細節。

+0

您使用的所有第三方組件仍由其公司維護。大多數已經與Kylix(即舊CLX)兼容。所以我猜想你的應用程序的Mac OS端口是可能的,當這些第三方供應商將完成遷移。 如果您使用其他第三方組件,它可能會更加困難。但你的選擇是正確的。在未來,選擇開源組件可能是一個好主意,因爲過去有些公司離開了德爾福業務,但沒有公佈源代碼。 – 2010-09-02 10:07:33

+0

是的,我很幸運(考慮到選擇是在2001年)!我忘了提及ZipForge,並且那個仍然保留。 – LaBracca 2010-09-02 15:20:46

回答

4

xplatfrom框架將會(就我們所知道的)而言,類似於Kylix中使用的基於Qt的庫(CLX)。 VCL是一個強大的面向Windows的庫(它很好),並依賴於許多Windows特有的功能。因此,要做到跨平臺組件與VCL對應組件的高度兼容並不容易,即使不是不可能或有意義的話。 非視覺控件(即DAC)比視覺控件(即DevExpress小部件)要容易得多。如果第三方供應商將推出他們的xplat Delphi圖書館,它還有待觀察,很大程度上取決於Delphi 2011的成功和推廣。 將win32應用程序遷移到跨平臺可能需要很少的更改或大的修改,具體取決於它如何寫入,與Windows有多少關聯以及使用哪些庫。對於任何適度複雜的應用程序,恕我直言,它不會是一個簡單的遷移。

+0

當然,直到我們沒有看到D2011的行動,我們無法確定,無論如何依賴這麼多的組件供應商(特別是「.net oriented」devexpress)讓我覺得它實際上不可能遷移。要實現xplatform部署(客戶端部署),遷移到Web應用程序(Intraweb)所需的投資會少得多。還有「極端」的葡萄酒/ winebottler方向。 – LaBracca 2010-06-17 11:51:49

3

那麼,德爾福2011是在這個時候的私人測試版,很少有受信任的人知道它。

因此,直到八月底,我想我們不會看到它的行動。但是,我聽說新的跨平臺應用程序被稱爲UCL應用程序,而不是VCL應用程序。不管怎樣,Delphi在傳統上都是一個Windows工具,我懷疑當前的應用程序與Windows平臺有關,所以我期望在轉換到跨平臺的情況下這個過程是乏味的。

當我說綁我的意思是調用Windows庫或函數。

德爾福的大多數軟件使用Windows的特定功能,如ShellExecuteMessageBox,功能從advapikernel32等進口,這些都是在其他平臺上無法使用,因爲他們有自己的庫中的函數。

但我期望這個功能可以在新的跨平臺庫中使用,萬一它不是那麼大的故障imo。

1

DELPHI-XE不允許您編譯應用程序MacOS的

看看在embarcadero site德爾福-XE特徵矩陣。

3

Delphi 2011已經出來了,它被稱爲Delphi XE。它僅支持32位Windows,就像以前版本的Delphi一樣。 64位,OS X和Linux仍然在roadmap上。

在Delphi實際支持它之前,不可能說跨平臺的Windows和OS X有多容易。但是我們可以基於Kylix做一些猜測,Kylix是Delphi的不再使用的Linux版本。

Kylix引入了一個名爲CLX的新組件庫。 CLX與VCL非常相似,但不完全相同。 CLX適用於Windows和Linux。 VCL仍包含在僅限Windows的應用程序中。將VCL應用程序移植到CLX並不困難,至少如果所有第三方組件都支持CLX。最難的部分是直接移植您自己的代碼的那些稱爲Win32 API的部分。

有人做了什麼,包括我自己,是在Windows上使用VCL,在Linux上使用CLX。這使事情變得更加困難,因爲它需要兩套表單,一套用於Windows,另一套用於Linux。要做到這一點,你必須從表單中分離出儘可能多的非可視代碼。例如。您將TActionList放置在應用程序上由VCL和CLX版本共享的數據模塊上,然後使用單獨的VCL和CLX版本的表單提供使用操作列表的工具欄等。如果您將來考慮支持多種平臺,現在可以通過將盡可能多的代碼分離爲儘可能不與表單綁定的單元來進行準備。

由於Delphi旨在創建本機應用程序,因此您永遠不會像Java提供的那樣「編譯一次就運行」。相反,如果Embarcadero遵循他們的路線圖,我們將會「開發一次編譯許多地方」。