【问题标题】:Stuck with Delphi.NET and Delphi 2007坚持使用 Delphi.NET 和 Delphi 2007
【发布时间】:2014-06-23 19:22:18
【问题描述】:

我的公司有一个大问题。我们在 Delphi.NET 中开发了一个包含超过 1.000.000 行代码的应用程序。正因为如此,我们被 Delphi 2007 和 .NET 2.0 困住了。

随着技术和用例的发展,我们需要迁移到另一个开发平台。到目前为止,我们尝试了几种承诺将 Delphi.NET 转换为 C# 代码的工具 - 每个工具都有一些问题,例如字符串索引错误(Delphi 1 C# 0)或使用类型声明数组边界时。

采用这种方法后,我们尝试反编译 Delphi.NET 程序集 - 从中​​返回的代码难以阅读,并且具有数百个调用 Borland 特定程序集的辅助函数。我已经研究过自己编写转译器的可能性,但是 Delphi 的模棱两可的语法很难用直截了当的语法来实现。

所以现在有个很好的问题,是否还有任何可能不包括手动翻译所有代码?或者可能是允许部分和逐步迁移的迁移路径?

【问题讨论】:

  • 允许部分和逐步迁移的迁移路径?对我来说,这听起来很诱人;但当然,除了行数之外,我对您的系统一无所知。它是模块化的吗,它是如何分区的等等?
  • 该应用程序分为大约 200 个单元,并在 IIS 上提供旧式 WCF Web 服务。我在这里看到的问题是,尽管 .NET 允许语言互操作,例如在一个项目中组合 VB 和 C# 源文件 - 我不知道这种互操作如何适用于 C# 和 Delphi.NET
  • 构建 UI 并通过 Interop 调用所有 Delphi DLLS 可以作为一个开始。然后,开始用适当的方法替换每个 DLL 函数调用。你的结果可以是更好的松耦合系统。
  • 我认为如果你想把工作做好,你需要重新编写应用程序。
  • 推荐阅读:有效地使用遗留代码(Robert C. Martin)

标签: c# .net delphi delphi-2007 delphi.net


【解决方案1】:

查看以下工具: http://www.9rays.net/TourStep.aspx?TourStepID=21

虽然它可能不像通过它运行整个 Delphi 应用程序并获得 C# 源代码那么简单,但这些 IL 翻译器/反编译器非常准确。我的建议是运行一些程序集并进行回归测试以抽查准确性。很有可能您必须对生成的代码进行一些修复,但这比重写整个应用程序要好。

另外:查看http://blogs.msdn.com/b/danielfe/archive/2004/06/15/156087.aspx

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多