有没有一种简单的方法,将Delphi 2009中的Win32应用程序移植到.NET?

时间:2008-09-25 09:23:16

标签: .net delphi delphi-2009

我们希望从Delphi 7.0迁移到Delphi 2009,以便使用现代IDE和当前技术。我们的目标平台是.NET。实现这一目标的最佳方式是什么?

6 个答案:

答案 0 :(得分:3)

请记住,D2009是win32版本,而不是.net。我想你想做两步之路,首先转到D2009然后转到.net?

幸运的是,delphi是一个非常稳定的平台,将旧应用程序转换为最新版本要容易得多,但你需要考虑不同的事情。

如果您的应用程序使用BDE访问Db,则将其转换为使用其他技术,如ADO或DBX。

如果您使用第三方组件,请确保存在D2009和/或.NET

的版本

一个非常微妙的方面是字符串处理。如果你“正常”使用字符串,你应该没有大问题,但如果你像C中那样使用字符串作为“字节缓冲区”,那么你必须小心并尝试重写那些部分。一个经验法则是“试图摆脱代码中的所有PChar”。

答案 1 :(得分:3)

我将使用D2007到D2009中的字符串处理来处理Unicode情况 - 此步骤中涉及的更改可能会影响您的应用程序(只有您可以告诉它)。此外,您还需要考虑您正在使用的第三方工具/库/组件。并不是所有东西都跳到了D2009,而且一些不那么受欢迎的组件可能永远都不会跳跃。

一条更聪明的道路可能是将D7迁移到D2007 (这是一条经过深思熟虑的道路,在很多胜利和值得改进的情况下很无痛)。然后,您将进入一个现代的,稳定的,最新的,受支持的Delphi平台,您可以从中更好地评估跳转到.Net。

我自己对最后一个阶段的看法会回应其他一些评论,请注意 - 除非你从.Net得到一些大的胜利,我不明白为什么你会离开德尔福。随着各种运行时和服务包的现代需求,我认为Delphi正在成为越来越 可行的 相关工具Win32开发。 要么将代码从D7演变为D2007 / D2009,要么从D7跳转到.Net;做一个然后另一个看起来有点奇怪!

答案 2 :(得分:2)

从Delphi 7迁移到Delphi 2009可能很简单,只有很小的改动(例如最近讨论的从ANSI转换到Unicode字符串)。 但是,迁移到.NET并不是那么简单。虽然有一个VCL.NET可以使迁移GUI成为可能,但严重的其他东西是行不通的。所以你可能会考虑使用Win32代码和.NET代码,通过COM将它们组合在一起。 (我希望你已经知道COM,否则这可能不是一个选择; - ))

答案 3 :(得分:2)

Delphi 2009仅限Win32。 对于.NET,你可以使用带有Delphi个性for .NET的RAD Studio 2007,将一个简单的VCL应用程序移植到面向.NET 2.0框架的VCL.NET应该相当容易。但是,如果您使用任何第三方组件和库,则还必须检查其.NET替代方案。

如果您发现这将是太多工作,或者如果您想要定位最新的.NET框架,最好使用Microsoft的Visual Studio和C#从头开始重写您的项目。

免责声明:我没有将Delphi Win32项目移植到.NET的经验,所以这只是我的拙见。

答案 4 :(得分:1)

移植绝非易事。然而,Delphi和.NET之间的语义非常接近,因为他们都有Anders Hejlsberg作为他们的首席架构师。您很可能需要将Win32 VCL调用替换为等效的VCL.NET。

您可能希望升级到CodeGear RAD Studio,因为这样可以让您拥有一个用于Delphi和.NET语言的IDE(主要是C#)。

很多时候,当从一种技术转移到另一种技术时,我能够放弃控制替代品。例如,我能够用他们的ADO.NET替换替换BDE数据库控件,而不必真正改变代码。最终,您拥有代码并且比我们任何人都更了解。

当你对Win32可执行文件有一些非常好的支持时,为什么要定位.NET框架? Delphi已经是业界的一小部分,而Delphi与.NET甚至更小。 Delphi总是成为.NET世界的二等公民。 Delphi已经是一流的Win32公民。

答案 5 :(得分:1)

根据Giacomo上面的回答,如果您使用BDE,那么我可以推荐MicroOlap的DAC http://www.microolap.com/ - 这将为您节省大量时间,而无需将代码转换为其他内容。我使用的是PostgresDAC,这款产品非常稳定,快速。