首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级win32 VCL应用跨平台

升级win32 VCL应用跨平台
EN

Stack Overflow用户
提问于 2010-06-17 17:41:32
回答 4查看 852关注 0票数 4

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

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

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

我使用以下第三方组件:

devexpress - UI

devart - DAC

Reportbuilder - UI

Steema/TeeChart - UI

我不期望有一个向导来为我做这项工作,我只是想更好地了解细节。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-17 19:00:12

xplatfrom框架将是(据我们所知)类似于CLX的修订版(希望有很大改进),它是Kylix中使用的基于Qt的库。VCL是一个强烈面向Windows的库(它确实很好),它依赖于许多特定于Windows的特性。因此,要使跨平台组件与VCL对等组件高度兼容并不容易--如果不是不可能或有意义的话。对于非可视控件(例如,DAC)来说,它比对于可视控件(即,DevExpress小部件)容易得多。如果第三方供应商将为xplat Delphi推出他们的库,还有待观察,这在很大程度上将取决于Delphi 2011的成功和传播。将win32应用程序迁移到跨平台可能需要很小的更改,也可能需要很大的更改,这取决于它是如何编写的,在多大程度上依赖于Windows,以及使用了哪些库。对于任何中等复杂的应用程序,我认为这不是一个容易的迁移。

票数 4
EN

Stack Overflow用户

发布于 2010-06-17 18:32:08

好的,Delphi 2011目前正处于私人测试版中,几乎没有值得信赖的人知道它。

因此,我猜在8月下旬之前,我们不会看到它的实际效果。然而,我听说新的跨平台应用程序被称为UCL应用程序而不是VCL应用程序。

无论以哪种方式,由于Delphi是一个传统的windows工具,我怀疑当前的应用程序在某种程度上与windows平台捆绑在一起,所以我预计在转换到跨平台的情况下,这个过程将是乏味的。

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

大多数Delphi软件使用特定于windows的函数,如ShellExecuteMessageBox、从advapikernel32等导入的函数,这些函数在其他平台上是不可用的,因为它们有自己的库。

但我希望这个功能能在新的跨平台库中可用,以防它不能,这将是一个巨大的失败。

票数 3
EN

Stack Overflow用户

发布于 2010-09-02 10:59:29

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

在Delphi真正支持Windows和OS之前,很难说跨平台是多么容易。但我们可以基于Kylix进行一些猜测,Kylix是Delphi的已停产的Linux版本。

Kylix引入了一个名为CLX的新组件库。CLX与VCL非常相似,但并不完全相同。CLX在Windows和Linux上都可用。VCL仍然包含在仅用于Windows的应用程序中。将VCL应用程序移植到CLX并不太困难,至少如果您的所有第三方组件都支持CLX的话。最困难的部分是移植您自己的代码中直接调用Win32应用程序接口的部分。

有些人,包括我自己,在Windows上使用VCL,在Linux上使用CLX。这使事情变得更加困难,因为它需要两组表单,一组用于Windows,另一组用于Linux。要成功做到这一点,您必须将尽可能多的非可视化代码从表单中分离出来。例如,你将你的TActionList放在一个数据模块上,该模块由应用程序上的VCL和CLX版本共享,然后拥有单独的VCL和CLX版本的表单,该表单提供了使用操作列表的工具栏等。如果您正在考虑将来支持多个平台,那么现在就可以通过将尽可能多的代码分成与表单无关的单元来做好准备。

由于Delphi的目标是创建本机应用程序,因此您永远不会像Java提供的那样“一次编译就在任何地方运行”。取而代之的是,假设Embarcadero遵循他们的路线图,我们将“一次开发编译许多地方”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3060490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档