2011-06-01 28 views
5

我們的一個客戶希望他們的Delphi應用程序轉換爲.NET 4.0。在閱讀本網站上對各種類似問題的回覆之後,我決定採取一步一步的方式將Delphi代碼轉換爲.NET。從Delphi轉換到.NET 4(沒有任何工具)

由於我是一名.NET開發人員,我需要先熟悉Delphi。找到能夠全面概述Delphi概念的單一站點是相當困難的。此外,我還沒有找到任何網站提供有關在.NET中的Delphi的等價物的信息。 例如.NET中「stdcall」或「export」的等價物是什麼?或者什麼是.NET中特定的Delphi數據類型的等價物?

有沒有人知道這種在線資源,它提供有關Delphi中的.NET等價物的信息?另外如果有人可以提供任何提示呢?

+0

這太廣泛了,無法回答。閱讀delphi語言指南並從那裏獲取它。 – 2011-06-01 12:22:48

+0

請參閱Embarcadero的文檔wiki:http://docwiki.embarcadero.com/RADStudio/en/Main_Page – 2011-06-01 12:29:14

+3

我想補充一點,在語言元素之間尋找1:1映射是錯誤的。如果這會削減它,那麼會有自動化的工具。例如,'stdcall'和'export'關鍵字指示一個設計用於其他應用程序的DLL。在.NET世界中沒有直接的等價物,因爲你無法從本機應用程序鏈接到.NET庫,你需要使用各種互操作技術。 – 2011-06-01 12:39:36

回答

2

真的,要做到這一點的最快方法是從開始刮。試圖將來自Deplhi的遺留代碼轉換爲C#只是充滿了問題,並且最終會有類似Delphi的C#應用​​程序。底層框架,Delphi中的VCL和.NET中的FCL具有顯着的體系結構差異,所以考慮到轉換時間大致相當於從頭開始開發的時間量,所以您正在向第二類應用程序,如果你沿着轉換路徑。

而且我可能會補充說我已成功將應用程序框架從Deplhi轉換爲Delphi.NET,以用於Visual Studio。我這樣做是爲了維持兩個開發環境之間的進程間通信和架構兼容性。如果這個好處不大,我就不會做這個轉換。

2

正如其他人指出的那樣,除非決定全面解釋德爾福是什麼以及它如何與網絡進行比較,否則沒有直接的方法可以回答這個問題。

您可能有興趣瞭解RadStudio的最新版本確實包含了一個集成在VS中的Delphi.NET。

這可能是您工作最短,最安全的途徑。

對於初學者來說,這兩個版本(雖然差別很大)仍然具有足夠的相似性,可以大部分進行交叉編譯 - 這肯定是一個開始。

我不確定GUI,但只要應用程序使用主流組件,應該有dotNET對應。例如,想到DevExpress和TMS。

最後,但並非最不重要的,我相信,如果你需要任何具體的幫助,我們都會很樂意幫助:)

安德烈

+2

我不會推薦移植到Delphi Prism,主要是因爲客戶端明確要求使用c#版本,並且從Delphi win32移植到Delphi Prism幾乎與移植到c#一樣的工作量。 Delphi Prism或Oxygene不是Delphi,它是.NET的Object Pascal編譯器。真正的Delphi.NET(德爾福2007年.NET)已停產,並有很好的理由。例如,在Delphi Prism – 2011-06-01 13:39:19

+0

中沒有類變量這部分是正確的,但有幾點需要考慮: 1)雖然語言不同,但仍然有很大的兼容性。 2)的確,Delphi.NET不是C#,但這不是問題,因爲有很多轉換器,包括諸如反射器 Plus之類的東西,雖然不可能匹配Delphi和dotNET 1到1,但它確實更快這樣(在我看來)而不是任何其他選擇。 Andrea – 2011-06-01 13:49:29

+0

移植到棱鏡也會保持與VCL的聯繫,這是一個巨大的優勢,使用C#時,您必須使用完全不同的框架。除了棱鏡,您可以重用(大部分).dfm文件,而C#則必須重新設計這些文件,方式更多。 – Johan 2011-06-01 16:15:04

1

我會採取一些自動化工具移植到C#只是爲了讓你感受到移植不同語法的痛苦,之後就是所有的手工工作。

而且有一本書Delphi開發描述.NET和異同,.NET 2.0 for Delphi Programmers我知道,這是周圍的其他方式,但IMO可以幫助

+0

謝謝@Antonio Bakula。我認爲[Delphi程序員.NET 2.0]([http://www.amazon.com/NET-2-0-Delphi-Programmers-Shemitz/dp/1590593863])和[Delphi for .NET開發人員指南](http: //www.amazon.com/Delphi-Developers-Guide-Xavier-Pacheco/dp/0672324431/ref=ntt_at_ep_dpi_1)將會非常有用 – 2011-06-01 14:04:54

+0

-1鏈接到VCL和DFM文件怎麼樣?這是大多數工作的地方.... – Johan 2011-06-01 16:16:05

+0

自動化工具可以做到這一點,例如Delphi2CS可以將* .dfm文件轉換爲C#代碼。在他們的網站上,他們表示Delphi2CS可以將VCL組件轉換爲c#。我沒有使用它,所以我不知道這是如何工作的,但我做了一個研究,將我的Delphi 2006系統移植到C#上,在我當時工作過的最後一家公司(2007年)建議取消一起移植並繼續使用Delphi :) – 2011-06-01 17:42:47

相關問題