2014-06-23 38 views
12

我的公司有一個主要問題。我們在Delphi.NET中開發了一個包含超過1,000,000行代碼的應用程序。正因爲如此,我們堅持使用Delphi 2007和.NET 2.0。Delphi.NET和Delphi 2007卡住

隨着技術和應用的不斷髮展,我們需要遷移到另一個開發平臺。到目前爲止,我們嘗試了幾種承諾將Delphi.NET轉換爲C#代碼的工具 - 這些工具中的每一個都有幾個問題,比如字符串錯誤索引(Delphi 1 C#0)或類型被用來聲明數組邊界。

之後,我們嘗試反編譯Delphi.NET程序集 - 從那回來的代碼幾乎不可讀,並且有數百個調用Borland特定程序集的幫助函數。我已經考慮過自己編寫一個轉譯器的可能性,但Delphi的模糊語法太難以用直接的語法來實現。

所以,現在最重要的問題是,還有沒有任何可能性,不包括手動翻譯所有的代碼?或者也許是允許部分逐步遷移的遷移路徑?

+0

_a的遷移路徑,允許部分和逐步遷移_對我來說這__sounds__邀請;但當然,除了行數外,我對你的系統一無所知。它是模塊化的,它是如何分區的? – TaW

+0

該應用程序分爲大約200個單元,並在IIS上提供舊式WCF Web服務。我在這裏看到的問題是,儘管.NET允許像在一個項​​目中結合使用VB和C#源文件這樣的語言互操作 - 我不知道這種互操作如何爲C#和Delphi.NET工作 – user3768733

+0

構建UI並調用所有的Delphi通過Interop的DLLS可以成爲一個開始。然後,用適當的方法開始替換每個DLL函數調用。你的結果可以更好地鬆散耦合系統。 – celerno

回答

4

退房工具,如: http://www.9rays.net/TourStep.aspx?TourStepID=21

雖然它可能不會像通過它運行你的整個Delphi應用程序並獲得C#源回報那樣簡單,這幾樣IL譯者/反編譯器是相當準確的。我的建議是運行幾個程序集並通過迴歸測試來檢查準確性。機會非常高,您必須在生成的代碼中進行一些補救,但這比重寫整個應用程序要好。

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