2010-06-17 80 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遵循他们的路线图,我们将会“开发一次编译许多地方”。