Delphi 将win32 VCL应用程序升级到跨平台

Delphi 将win32 VCL应用程序升级到跨平台,delphi,cross-platform,delphi-xe,Delphi,Cross Platform,Delphi Xe,Delphi2011将允许编译同样在Mac OS上运行的应用程序。(注意:我在Delphi XE preview发布之前写了这句话,当时每个人都在谈论ProjectX) 认为有可能“跨平台迁移”win32应用程序是现实的吗 第三方组件供应商是否会使其库跨平台,或者这实际上是不可能的 我使用以下第三方组件: devexpress-UI 德瓦特-DAC 报表生成器-用户界面 Steema/TeeChart-UI 我不希望有一个向导能帮我完成这项工作,我只是想更好地了解细节。好吧,Delphi 201

Delphi2011将允许编译同样在Mac OS上运行的应用程序。(注意:我在Delphi XE preview发布之前写了这句话,当时每个人都在谈论ProjectX)

认为有可能“跨平台迁移”win32应用程序是现实的吗

第三方组件供应商是否会使其库跨平台,或者这实际上是不可能的

我使用以下第三方组件:

devexpress-UI

德瓦特-DAC

报表生成器-用户界面

Steema/TeeChart-UI


我不希望有一个向导能帮我完成这项工作,我只是想更好地了解细节。

好吧,Delphi 2011目前正处于私人测试阶段,很少有值得信任的人知道这一点

所以直到八月底,我想我们都不会看到它在起作用。然而,我听说新的跨平台应用程序被称为UCL应用程序,而不是VCL应用程序

无论哪种方式,由于Delphi传统上是一种windows工具,我怀疑当前的应用程序与windows平台有一定的联系,因此我认为在转换为跨平台的情况下,这个过程会很繁琐

当我说绑定时,我指的是调用windows库或函数

大多数Delphi软件使用windows特定的函数,如
ShellExecute
MessageBox
,从
advapi
导入的函数,
kernel32
等,这些函数在其他平台上不可用,因为它们有自己的库


但是我希望这个功能可以在新的跨平台库中使用,如果不是的话,这在我看来是一个巨大的失败。

xplatfrom框架将(据我们所知)类似于一个经过修改(希望得到很大改进)的CLX,Kylix中使用的基于Qt的库。VCL是一个强大的面向Windows的库(这很好),它依赖于许多Windows特有的功能。因此,要使跨平台组件与VCL组件高度兼容,即使不是不可能或有意义的,也绝非易事。 非可视控件(即DAC)比可视控件(即DevExpress小部件)容易得多。如果第三方供应商将推出他们的xplat Delphi库,还有待观察,这在很大程度上取决于Delphi 2011的成功和推广。
将win32应用程序迁移到跨平台可能需要小改动或大改动,具体取决于它的编写方式、与Windows的关联程度以及使用的库。对于任何中等复杂的应用程序,IMHO的迁移并不容易。

DELPHI-XE不允许您为MacOS编译应用程序


请查看上的Delphi XE功能矩阵。

Delphi 2011已发布,它被称为Delphi XE。它只支持32位Windows,就像以前版本的Delphi一样。64位、OS X和Linux仍保留在主机上

在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按照他们的路线图进行开发,我们将使用“一次编译多个地方”。当然,直到我们没有看到D2011投入使用之前,我们无法确定,无论如何,依赖于如此多的组件供应商(特别是面向.net的“devexpress”)让我认为迁移是不可能的。要实现xplatform部署(客户端部署),迁移到web应用程序(Intraweb)所需的投资要少得多。还有“极限”葡萄酒/葡萄酒装瓶商的方向。您使用的所有第三方组件仍由其公司维护。大多数已与Kylix(即旧CLX)兼容。因此,我想当这些第三方供应商完成迁移时,您的应用程序的Mac OS端口将成为可能。如果使用其他第三方组件,可能会更困难。但你的选择是正确的。在未来,选择开源组件可能是一个好主意,因为过去人们看到一些公司没有发布源代码就离开了Delphi业务。是的,我非常幸运(考虑到选择是在2001年作出的)!我忘了提到ZipForge了,那个仍然保留着。