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

3

我们希望从Delphi 7.0迁移到Delphi 2009,以跟上现代IDE和当前技术的步伐。我们的目标平台是.NET。最好的方法是什么,以实现这个目标?

6个回答

3
请记住,D2009是win32版本,而不是.net版本。我猜你想要走两步路径,先转到D2009,然后再转到.net?
幸运的是,Delphi是一个非常稳定的平台,将旧应用程序转换为最新版本要容易得多,但您需要考虑不同的事情。
如果您的应用程序使用BDE访问数据库,请将其转换为使用其他技术,如ADO或DBX。
如果您使用第三方组件,请确保存在适用于D2009和/或.NET的版本。
一个非常微妙的方面是字符串处理。如果您正常使用字符串,则不应该有太大问题,但如果您像在C中那样将字符串用作“字节缓冲区”,则必须小心并尝试重写这些部分。一个经验法则是“尽量摆脱代码中的所有PChar”。

我们希望分两步进行转换。第一步是将Delphi 7.0转换为现代IDE和实际版本的Delphi Framework。下一步将是移植到.NET。.NET是我们公司的战略平台。也许,真正的选择在于2007 RAD或Delphi 2009之间。 - ChaosSpeeder

3

我会考虑从D2007到D2009引入的字符串处理中涉及的Unicode情况 - 这个步骤所涉及的更改可能会对您的应用程序产生很大影响(只有您自己可以判断)。此外,您需要考虑您正在使用什么第三方工具/库/组件。并非所有内容都已经跳到D2009上了,一些不太流行的组件可能永远不会跳过来。

一个更明智的选择可能是将D7迁移到D2007(这是一条经常走过的路,几乎没有痛苦,并且有很多胜利和值得的改进)。然后,您就可以在现代、稳定、相当新的、受支持的Delphi平台上更好地评估跳转到.Net的可能性。

不过,我的个人观点与其他评论中的一些观点相同 - 除非您从.Net获得了某些重大优势,否则我不明白为什么要离开Delphi。随着各种运行时和服务包的现代要求,我认为Delphi正变得越来越成为Win32开发的一个越来越可行相关的工具。要么从D7到D2007/D2009演变,要么直接从D7跳到.Net;先这样做再那样做似乎有点奇怪!


2
从Delphi 7迁移到Delphi 2009可能很简单,只有一些小的变化(比如最近讨论的从ANSI到Unicode字符串的转换)。然而,转向.NET就不那么简单了。虽然有一个VCL.NET可以使GUI的迁移成为可能,但是其他一些事情将无法正常工作。因此,您可能需要同时拥有Win32代码和.NET代码,并通过COM将它们结合起来。(我希望您已经了解COM,否则这可能不是一个选择;-))

2

Delphi 2009 只支持 Win32。如果您想使用 .NET,可以使用带有 Delphi 个性化设置的RAD Studio 2007,并且将简单的 VCL 应用程序移植到针对 .NET 2.0 框架的 VCL.NET 中应该相当容易。然而,如果您使用任何第三方组件和库,则需要检查它们是否有适用于 .NET 的替代品。

如果您觉得这样做太麻烦或者想要针对最新的 .NET 框架,那么最好从头开始使用 Microsoft 的 Visual Studio 和 C# 重写项目。

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


1

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

您可能想升级到CodeGear RAD Studio,因为这将让您拥有一个IDE,可同时支持Delphi和.NET语言(主要是C#)。

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

当您已经有很好的Win32可执行文件支持时,为什么要针对.NET框架进行目标定位呢?Delphi已经是行业的一个小部分,而带有.NET的Delphi甚至更小。Delphi在.NET世界中永远只会是二等公民。Delphi已经是一流的Win32公民。


我们想要迁移到.NET,因为我们将我们的其他产品(C++和VB6)移植到.NET平台上。但这应该在进一步的步骤中进行。 - ChaosSpeeder

1

继Giacomo的上面的回答之后,如果您正在使用BDE,则我可以建议MicroOlap的DAC http://www.microolap.com/ - 这将节省您大量时间,不需要将代码转换为其他语言。我正在使用PostgresDAC,这个产品非常稳定和快速。


谢谢,但我们没有使用MySQL。我们必须支持Informix、Oracle和SQL-Server。 - ChaosSpeeder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接