将Delphi代码转换为C++的最佳方法?

Dan*_*olt 8 c++ delphi macos

我有一个用Delphi编写的应用程序在Delphi 2007中编译.我认为它最初是用Delphi 7编写的.

无论如何,我需要将所有核心非GUI代码转换为C++,因为我想发布该软件的Mac版本.

做这个的最好方式是什么?我可以采取任何捷径来加快这个过程吗?

编辑:代码编译为本机代码,而不是.NET.

Mas*_*ler 12

简单的回答:如果没有完全重写,你根本无法将非平凡的Delphi代码移植到C++.C++的对象模型与Delphi有很大的不同.它没有像TObject这样的基类,从中派生出所有其他对象,并且它缺乏对Delphi代码通常认为理所当然的许多RTTI内容的支持.并且没有简单的方法可以在C++中重新实现Delphi RTTI,因为很多都是在编译器级别完成的,而且很多都是基于所有Delphi类都来自TObject的事实.

C++也缺乏对Delphi中常见的单元初始化终结部分概念的支持,而且它所反而严重破坏了.(查看所有血腥细节的"静态订单初始化惨败".)

Delphi的异常处理也比C++更先进.部分内容是对象模型及其编译魔术的一部分.另外,C++不支持try-finally结构.

如果您想将Delphi项目移植到Mac,Free Pascal是您的最佳解决方案.它与Delphi没有100%的兼容性,但它对很多东西都很好,你特别提到你不需要移植Delphi GUI的东西.AFAIK GUI区域是大多数FPC兼容性弱点的来源,因此如果没有必要,FPC可能非常接近理想的需求,至少在CodeGear获得OSX编译器之前.(这还没有正式宣布,但基于已经说过的各种事情,假设明年某个时候可以使用它并不是不合理的.)

  • 2.我从哪里开始?捕获异常总是适用于引发的异常的真实类型; 你不必通过箍来"多态地投掷"和"多态地捕捉".在另一个处于活动状态时激活异常不会调用Terminate(). (2认同)

Chr*_*utz 11

为什么不使用OS X Delphi编译器?免费Pascal声称支持OS X上的Delphi(虽然不是Pascal编码器,我还没有尝试过).


小智 5

要将代码从 Delphi 转换为 Cpp,请查看

http://ivan.vecerina.com/code/delphi2cpp/

我用它来使用 wxWidgets 函数转换 SysUtils、DateUtils 和 StrUtils 中的一些类和函数。如果您计划将 wxWidgets 用于 C++,请查看http://twinforms.com/products/wxwidgets/wxvcl.php,其中包含所有转换后的源代码。

如果您想直接使用 wxForms for Delphi 开发 Mac OSX 应用程序 - http://twinforms.com/products/wxformsdelphi/index.php


Ree*_*sey 0

如果您的代码在 Delphi 2007 中编译为 .NET 程序集,那么您可能有一个比尝试从 Delphi 的 object pascal 移植到 C++ 更容易的选择。

您可以将逻辑编译到 .NET 程序集(甚至可能是 UI 的一部分)中,并使用 Mono 在 Mac 上运行它。您可以围绕 Mono 编写自定义 GUI,甚至可以制作一个独立于平台的应用程序。