¿Qué herramientas existen para convertir una aplicación Delphi 7 a C# y .Net framework?[cerrado]

StackOverflow https://stackoverflow.com/questions/59547

  •  09-06-2019
  •  | 
  •  

Pregunta

Mantengo una antigua aplicación solo para PC escrita en Delphi 7.Aunque Delphi me ha sido muy útil en el pasado, ahora sólo lo uso para esta aplicación y encuentro que mis habilidades con el lenguaje están disminuyendo.Su sintaxis es muy diferente de los lenguajes de mi "trabajo diario" de Java/Ruby, por lo que me lleva más tiempo acostumbrarme a escribir código nuevo, además es tan antiguo que no he usado muchos. interfaz¡Así que el código no se administra, lo que ahora me parece antiguo!

Muchos de mis usuarios se están mudando a Vista, lo que puede ejecutar la aplicación en modo de compatibilidad o puede tener problemas de GPF dependiendo de cómo su departamento de TI configure su PC, por lo que tengo que realizar un poco de mantenimiento en la aplicación.Me pregunto si debería pasar a una pila más familiar.

¿Existe una herramienta automatizada que haga el trabajo preliminar de convertir el código base a C#, dejándome concentrarme en la conversión de cualquier componente no estándar?Estoy usando un componente de base de datos integrado llamado Base de datos absoluta que es compatible con BDE y utiliza SQL estándar en todo momento, y un componente de navegador HTML nativo de Delphi que se puede intercambiar con algo del mundo de Microsoft.

¿Qué tan buenas son estas herramientas de conversión?

¿Fue útil?

Solución

No conozco ninguna herramienta automatizada para realizar esa conversión.Personalmente, te sugeriría que te quedes con Delphi, tal vez simplemente actualices a una nueva versión.He visto un par de códigos DOM que intentan convertir de Delphi a C#, pero eso no soluciona el problema de la biblioteca.

CodeGear (formalmente Borland) tiene una herramienta para pasando de C# a Delphi Eso funciona bien.Supongo que las herramientas que van en la otra dirección funcionarán igual (requiriendo mucha edición).Aquí hay una herramienta sueca que funciona según el mismo principio de CodeDOM para pasar de Delfos a C# (y varios otros idiomas).Hay otros, simplemente no puedo encontrarlos ahora.

Otra opción sería actualizar a una versión más actual de Delphi para .NET y trasladar su código a .NET de esa manera.Una vez que lo haga funcionar en Delphi para .NET (lo cual será bastante fácil, excepto para la base de datos integrada, a menos que tengan una versión .NET), puede usar Reflector .NET y Desensamblador de archivos invierta el IL a C#.Seguirás usando VCL, pero puedes usar C# en lugar de Object Pascal.

Otra solución similar sería portarlo a Oxígeno de RemObjects.Creo que tienen una ruta de migración de Delphi Win32 a WinForms.Entonces usa Reflector .NET y Desensamblador de archivos invierta el IL a C#.

En resumen, no hay respuestas fáciles.La migración de idiomas es más fácil que la migración de bibliotecas.Mucho depende de los componentes de terceros que utilizó (más allá de AbsoluteDatabase) y de si realizó alguna llamada a la API de Windows directamente en su aplicación.

Otra opción completamente diferente sería buscar un equipo externo para mantener la aplicación.Probablemente puedan hacerlo por poco dinero.Podrías encontrar a alguien en tu país, pero sin duda te costaría más (aunque con la caída del dólar y el pobre mercado laboral nunca se sabe)...)

¡Buena suerte!

Otros consejos

Ha habido un informe científico de una transformación exitosa de un proyecto Delphi de 1,5 millones de líneas a C# por parte de John Brant.Escribió un analizador Delphi, un generador C# y muchas reglas de transformación en AST.Ampliar gradualmente el conjunto de reglas, realizar una compilación diaria, muchas pruebas unitarias y algunas reescrituras de partes difíciles de Delphi le permitieron con un equipo de 4 personas, entre los que se encontraban algunos de los desarrolladores originales, con profundos conocimientos de Delphi y C#, migrar el conjunto de reglas. software en 18 meses.Siendo John Brant el desarrollador original del navegador de refactorización y del kit de construcción del compilador SmaCC, es poco probable que puedas ir tan rápido.

Muchos de mis usuarios se están mudando a Vista, que pueden ejecutar la aplicación en modo de compatibilidad o pueden tener problemas GPF dependiendo de cómo su PC esté configurada por su departamento de TI, por lo que tengo que mantener algún mantenimiento en la aplicación.Me pregunto si debería saltar a una pila más familiar.

A menos que esté haciendo algo no estándar, las aplicaciones D7 deberían funcionar bien en Vista.

En cuanto a la conversión a C#, creo que la mayoría de las herramientas de conversión serían una pérdida de tiempo.Un mejor enfoque puede ser reescribir la aplicación desde cero.

No hay una respuesta fácil, pero tenga en cuenta que la variante Delphi.net del lenguaje apunta al tiempo de ejecución de .net y que diferentes lenguajes en .net pueden interoperar estrechamente.

Podría intentar compilarlo en Delphi.Net, factorizar diferentes ensamblajes y luego convertirlos manualmente uno por uno.Reflector podría ayudar a aplicar ingeniería inversa al código compilado en un esqueleto de código C#, equivalente pero sin comentarios, nombres de variables internas, etc.

Por otro lado, Delphi.net puede ser lo suficientemente bueno (TM) para este proyecto.

Pero a menos que tenga un buen conjunto de pruebas (supongo que probablemente no, dado el estado del arte en Delphi 7), introducirá errores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top