2014-06-23 12 views
12

Meine Firma hat ein großes Problem. Wir haben in Delphi.NET eine Anwendung entwickelt, die aus mehr als 1.000.000 Codezeilen besteht. Aus diesem Grund sind wir mit Delphi 2007 und .NET 2.0 festgefahren.Stuck mit Delphi.NET und Delphi 2007

Da Technologie und Anwendungsfälle weiter voranschreiten, müssen wir auf eine andere Entwicklungsplattform migrieren. Bis jetzt haben wir verschiedene Tools ausprobiert, die Delphi.NET in C# -Code konvertieren - jedes dieser Tools hatte mehrere Probleme, wie die falsche Indizierung von Strings (Delphi 1 C# 0) oder wenn Typen zum Deklarieren von Array-Grenzen verwendet wurden.

Nach diesem Ansatz haben wir versucht, die Delphi.NET-Assembly zu dekompilieren - der Code, der daraus zurückkommt, ist kaum lesbar und hat Hunderte von Hilfsfunktionen, die Borland-spezifische Assemblys aufrufen. Ich habe mir schon die Möglichkeit angeschaut, selbst einen Transpiler zu schreiben, aber die mehrdeutige Syntax von Delphi ist zu schwer in einer geradlinigen Grammatik zu implementieren.

So, jetzt die große Frage, gibt es noch eine Möglichkeit, die nicht beinhaltet, den gesamten Code von Hand zu übersetzen? Oder vielleicht ein Migrationspfad, der es erlaubt, teilweise und schrittweise zu migrieren?

+0

_a Migrationspfad, die teilweise und schrittweise migrieren können _ Für mich __sounds__ einladend; aber natürlich weiß ich absolut nichts über dein System außer der Zeilenanzahl. Ist es modular, wie ist es aufgeteilt usw.? – TaW

+0

Die Anwendung ist in ca. 200 Einheiten aufgeteilt und dient WCF-Webservices im alten Stil auf einem IIS. Das Problem, das ich hier sehe, ist, dass, obwohl .NET erlaubt Interop wie VB und C# Quelldateien in einem Projekt kombinieren - ich weiß nicht, wie diese Art von Interop für C# und Delphi.NET – user3768733

+0

Aufbau der Benutzeroberfläche und Aufruf all Ihrer Delphi funktionieren könnte DLLS via Interop kann ein Anfang sein. Beginnen Sie dann, jeden DLL-Funktionsaufruf durch eine geeignete Methode zu ersetzen. Ihr Ergebnis kann besser lose gekoppelt sein. – celerno

Antwort

4

Check-out-Tools wie: http://www.9rays.net/TourStep.aspx?TourStepID=21

Zwar ist es nicht so einfach sein kann Ihre gesamte Delphi App durch sie und bekommen C# Quelle dafür, diese Art von IL Übersetzer/decompilers sind ziemlich genau, wie ausgeführt wird. Mein Rat wäre, ein paar Assemblys durchzugehen und einen Regressionstest durchzuführen, um die Stichprobengenauigkeit zu überprüfen. Die Chancen sind sehr hoch, dass Sie im generierten Code etwas verbessern müssen, aber es ist besser, als die gesamte Anwendung neu zu schreiben.

auch:? Besuche http://blogs.msdn.com/b/danielfe/archive/2004/06/15/156087.aspx