Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Delphi到.NET4的转换(无任何工具)_.net_Wpf_Delphi_C# 4.0_Delphi 2009 - Fatal编程技术网

从Delphi到.NET4的转换(无任何工具)

从Delphi到.NET4的转换(无任何工具),.net,wpf,delphi,c#-4.0,delphi-2009,.net,Wpf,Delphi,C# 4.0,Delphi 2009,我们的一个客户希望将他们的Delphi应用程序转换为.NET4.0。在阅读了本网站上对各种类似问题的回复后,我决定采取一种逐步将Delphi代码转换为.NET的方法 由于我是一名.NET开发人员,我需要首先熟悉Delphi。很难找到任何一个网站提供德尔福概念的全面概述。此外,我还没有找到任何网站提供有关.NET中Delphi等价物的信息。 例如,在.NET中,“stdcall”或“export”的等价物是什么?或者.NET中特定Delphi数据类型的等价物是什么 有人知道这样的在线资源吗?它提供

我们的一个客户希望将他们的Delphi应用程序转换为.NET4.0。在阅读了本网站上对各种类似问题的回复后,我决定采取一种逐步将Delphi代码转换为.NET的方法

由于我是一名.NET开发人员,我需要首先熟悉Delphi。很难找到任何一个网站提供德尔福概念的全面概述。此外,我还没有找到任何网站提供有关.NET中Delphi等价物的信息。 例如,在.NET中,“stdcall”或“export”的等价物是什么?或者.NET中特定Delphi数据类型的等价物是什么


有人知道这样的在线资源吗?它提供了关于.NET中Delphi等价物的信息?另外,如果有人能提供任何关于这方面的提示

正如其他人所指出的那样,没有直接的方法来回答这个问题,除非决定一路解释什么是德尔福以及它与dotNet的比较

不过,您可能有兴趣知道RadStudio的最新版本确实包含一个集成在VS中的Delphi.NET

这可能是你找到工作的最短、最安全的途径

对于初学者来说,这两个版本(尽管有着显著的不同)仍然有足够的相似性,可以在很大程度上进行交叉编译——这当然是一个开始

我不确定GUI,但只要应用程序使用主流组件,就应该有dotNET对应的组件。 例如,我想到了DevExpress和TMS

最后,但并非最不重要的一点是,我相信,如果您需要任何具体的帮助,我们都会乐意提供帮助:)


Andrea

我会使用一些自动化工具来移植到C#只是为了减轻移植不同语法的痛苦,之后就全是手工工作了


还有一本专为Delphi开发人员编写的书,它描述了.NET及其异同点。我知道这是另一种方式,但IMO可以提供帮助。实际上,最快的方法是从头开始。尝试将遗留代码从Deplhi转换为C#充满了问题,最后,您将拥有一个类似Delphi的C#应用程序。底层框架(Delphi中的VCL和.NET中的FCL)在体系结构上有着显著的差异,因此,考虑到转换所需的时间大致相当于从头开始开发所需的时间,如果沿着转换的道路走下去,您就注定要成为二级应用程序


我还可以补充一点,我已经成功地将一个应用程序框架从Deplhi转换为Delphi.NET,以便在VisualStudio中使用。我这样做是为了维护两个开发环境之间的进程间通信和体系结构兼容性。如果这样做的好处不是很大,我就不会进行转换。

这太宽泛了,无法回答。阅读delphi语言指南并从那里开始。请看Embarcadero的文档wiki:我想补充一点,在语言元素之间寻找1:1映射是错误的。如果这能解决问题,那么这项工作就有了自动化的工具。例如,
stdcall
export
关键字表示设计用于其他应用程序的DLL。在.NET世界中没有直接的等价物,因为您无法从本机应用程序链接到.NET库,您需要使用各种互操作技术。@Cosmin Prunt可能感谢您的回答,但为什么不将这项工作转包给具有Delphi和Delphi Prism经验的人呢,这应该比你自己爬上学习曲线快得多。我不推荐移植到Delphi Prism,主要是因为客户端明确要求c#版本,而且从Delphi win32移植到Delphi Prism的工作量几乎与移植到c#的工作量相同。Delphi Prism或Oxygene不是Delphi,它是针对.NET的对象Pascal编译器。Real Delphi.NET(Delphi 2007.NET)由于很好的原因而停产。例如,Delphi Prismt中没有类变量,这在一定程度上是正确的,但有几件事需要考虑:1)虽然语言确实不同,但仍然有很大的兼容性。2) 的确,Delphi.NET不是C#但这不是问题,因为有大量的转换器,包括Reflector Plus之类的东西,虽然不可能将Delphi和dotNET 1比1匹配,但这样做(在我看来)肯定比其他任何选项更快。AndreaPorting to Prism还将保持与VCL的链接,这是一个巨大的优势,使用C#你将不得不使用一个完全不同的框架。除此之外,使用prism你可以重用(大部分)你的.dfm文件,而使用C#你必须重新设计这些文件,这需要做更多的工作。Johan,我不太确定这一点,但我不会指望太多。据我所知,用于dotNET的VCL已经停止。我的意思是,德尔福市场上的主要组件供应商在世界的dotNET方面也非常活跃,有时会带来更好的质量(比如Steema TChart)。不过,恐怕在UI方面还有很多工作要做。@Johan Delphi Prism中没有VCL,请看谢谢@Antonio Bakula。我认为与一起将非常有帮助-1到VCL和DFM文件的链接如何?这就是大部分工作的地方……自动化工具可以做到这一点,例如Delphi2CS可以将*.dfm文件转换为c#代码。在他们的网站上,他们表示Delphi2CS可以将VCL组件转换为c。我没有使用它,所以我不知道这是如何工作的,但我做了一项研究,需要什么来将大型Delphi 2006系统移植到c#,在我当时(2007年)工作的最后一家公司,根据我的建议,取消全部移植并继续使用Delphi:)