有什么工具可以将Delphi 7应用程序转换为C#和.Net框架?

我维护了一个用Delphi 7编写的旧PC应用程序。虽然Delphi过去很好地服务于我,但我现在只将它用于这个应用程序,并发现我的技能随着语言的减少而减少。 它的语法与我在Java / Ruby的“日常工作”语言上有太大的不同,所以我需要更长时间才能进入编写新代码的过程中,而且它已经很老了我没有使用过很多接口,因此代码不能管理我现在看起来很古老!

我的许多用户都转向使用兼容模式运行应用程序的Vista,或者可能有GPF问题,这取决于他们的IT部门如何配置他们的PC,因此我必须对应用程序进行一些维护。 我想知道我是否应该跳到更熟悉的堆栈。

是否有一个自动化工具可以完成将代码库转换为C#的工作,让我专注于任何非标准组件的转换? 我正在使用一个名为AbsoluteDatabase的嵌入式数据库组件,该组件兼容BDE并使用标准SQL,以及本机Delphi HTML浏览器组件,可以与Microsoft世界中的某些东西进行交换。

这些转换工具有多好?

我不知道有任何自动化工具可以进行转换。 我个人建议你坚持使用Delphi,也许只是升级到新版本。 我已经看到一些代码DOM尝试从Delphi转换为C#,但这并没有解决库问题。

CodeGear(正式名称为Borland)有一个从C#到Delphi的工具,运行正常。 我认为朝着另一个方向工作的工具将会起作用(需要大量编辑)。 这是一个瑞典工具,它使用相同的CodeDOM原则,从Delphi到C# (以及许多其他语言)。 还有其他人,我现在找不到它们。

另一个选择是升级到更新版本的Delphi for .NET,并以这种方式将代码移植到.NET。 一旦你在Delphi for .NET中工作(这将非常简单,除了嵌入式数据库,除非他们有.NET版本),你可以使用.NET Reflector和File Disassembler将IL转换为C#。 您仍将使用VCL,但您可以使用C#而不是Object pascal。

另一个类似的解决方案是通过RemObjects将其移植到Oxygene 。 我相信他们有一个到WinForms的Delphi Win32迁移路径。 然后使用.NET Reflector和File Disassembler将IL反转为C#。

总之,没有简单的答案。 语言迁移比库迁移更容易。 其中很大程度上取决于您使用的第三方组件(超出AbsoluteDatabase)以及您是否在应用程序中直接进行了任何Windows API调用。

另一个完全不同的选择是寻找离岸团队来维护应用程序。 他们可能会这么便宜。 你可以在国内找到一个人,但毫无疑问会让你付出更多代价(尽管美元贬值和就业市场不佳你永远不会知道……)

祝好运!

有一份科学报告称,约翰布兰特成功地将150万行delphi项目转变为C#。 他编写了一个Delphi解析器,一个C#生成器和许多关于AST的转换规则。 逐步扩展规则集,进行日常构建,大量unit testing以及对难度较大的Delphi部分进行一些重写使他能够拥有一个由4人组成的团队,其中一些原始开发人员具有深入的Delphi和C#知识,可以迁移软件在18个月内。 John Brant是重构浏览器和SmaCC编译器构建工具包的原始开发人员,你不太可能快速完成

我的许多用户都转向使用兼容模式运行应用程序的Vista,或者可能有GPF问题,这取决于他们的IT部门如何配置他们的PC,因此我必须对应用程序进行一些维护。 我想知道我是否应该跳到更熟悉的堆栈。

除非你做一些非标准的事情,否则D7应用程序应该在Vista中正常运行。

至于转换为C#,我认为大多数转换工具都是浪费时间。 更好的方法可能是从头开始重写应用程序。

没有简单的答案,但请记住,该语言的Delphi.net变体以.net运行时为目标,而.net上的不同语言可以紧密互操作。

您可以尝试在Delphi.Net中进行编译,将其分解为不同的程序集,然后逐个手动转换程序集。 Reflector可以帮助将编译后的代码逆向工程化为C#代码的框架 – 相当于但没有注释,内部变量名等。

另一方面,Delphi.net可能对这个项目来说足够好(TM)。

但除非你有一个好的测试套件(我猜可能不是,考虑到Delphi 7中最先进的技术),你将会引入错误。