programming - ¿Qué tan difícil es migrar un proyecto de Delphi 7 a Delphi XE?
delphi versiones (6)
Definitivamente es un desafío que se ejecute esta MIGRACIÓN. ¡Pero necesita un buen PLANEAMIENTO!
Primero debemos encontrar todos los componentes posibles que también se deben migrar junto con el Código. Si hay componentes de terceros utilizados en el proyecto Delphi7 que no están disponibles, entonces es bastante complicado seguir adelante. En segundo lugar, el otro tipo de conversión relacionada con Unicode, que es bastante fácil. Y finalmente, por supuesto, necesitamos tener otras bibliotecas de soporte, BDE y adaptadores de base de datos en su lugar.
Para la interfaz de usuario enriquecida, se puede usar Delphi FireMonkey .
Delphi está mejorando cada vez más, ya que ahora cuenta con soporte para el desarrollo de aplicaciones de escritorio a web y dispositivos móviles.
Nuestra compañía tiene un software que ha estado en desarrollo por más de 10 años, por lo que hay algunas cosas realmente anticuadas ahí. Sigue siendo bastante funcional y todo, pero veo las nuevas funciones en Delphi XE y me dan ganas de cambiar. El problema es que el código fuente en sí mismo supera los 300mb de archivos .pas (1gb en total con componentes, etc.).
Estamos usando componentes personalizados, cosas antiguas de jvcl y la última devexpress.
¿Qué tan difícil puedo esperar que sea si decido migrar de Delphi 7 a Delphi XE?
Gracias.
El único problema real es la conversión a Unicode. Debería aprender cómo se implementa el soporte Unicode en Delphi - comience desde el Libro Blanco de Marco Cantu : Delphi y Unicode
Es imposible estimar la cantidad de trabajo requerido para actualizar aplicaciones antiguas a Unicode sin conocer el código real. Si utilizara tipos de cadena de la manera estándar, la conversión sería fácil. Cualquier trucos de bajo nivel con tipos de cadenas (como el almacenamiento de datos binarios en cadenas) ahora están en desuso y el código correspondiente debe volver a escribirse.
He estado haciendo bastantes de esas conversiones.
Debe prepararse haciendo que su base de código actual sea comprobable. Preferiblemente usando pruebas unitarias automatizadas, pero al menos tener un buen plan de prueba para el usuario final.
Luego debe planificar la mayor parte: la conversión Unicode para su aplicación y su base de datos.
Finalmente, hay aspectos menos importantes, pero que pueden consumir mucho tiempo:
- Si está utilizando BDE, este es el momento de deshacerse de él
- Delphi XE es más estricto que Delphi 7
- Versiones de bibliotecas de terceros que incorporan bastantes versiones y generalmente son mucho menos compatibles con versiones anteriores que el VCL
Cuando lo haya portado, es hora de cambiar las cosas: dado que ya ha visto toda la base de códigos, ahora sabe dónde están sus puntos débiles, por lo que puede comenzar a refactorizarlos y obtener una mejor aplicación de la que tenía antes.
Mencionó SQL en uno de sus comentarios de respuesta ... ¿Admite su base de datos unicode? Si no, podrías tener mucho trabajo. Es posible que necesite convertir las bases de datos sobre la marcha o crear una herramienta de conversión para sus usuarios. Es posible que necesite actualizar la base de datos o incluso cambiar a otra cosa. Por ejemplo, DBISAM no es capaz de unicode, pero el proveedor hace que sea ElevateDB. La transición no es trivial. Y algunas otras bibliotecas como Hyperstring, escritas en gran parte en ensamblador, son otro punto sensible.
Mi proyecto consiste en un millón de líneas de código y recientemente transferí de CB9 a XE. Para reducir la cantidad de trabajo, primero reescribí mucho, por lo que ya no dependía de los paquetes de componentes de terceros, luego revisé cuidadosamente todo lo relacionado con las cadenas (unicode) y solo luego me mudé a XE. La preparación fue mucho trabajo, el puerto real fue relativamente fácil.
Algunas herramientas pequeñas migran sin necesidad de hacer ninguna modificación o solo un par de correcciones Unicode para que se ejecute.
Sin embargo, si su código base es tan grande como lo está explicando, no debe confiar completamente en lo que alguien aquí le dirá. Simplemente obtenga una copia de XE y cargue el código. Vea qué problemas tiene para tener una idea de la cantidad de esfuerzo que va a tomar.
En este momento, he transferido todo mi código a XE (incluso a proyectos antiguos). Reutilizo las mismas librerías tanto como sea posible, así que una vez que he convertido la mayoría de esas, "portar" aplicaciones de Delphi 7 a Unicode Delphi era generalmente una tarea repetitiva ya sea para tratar con interfaces actualizadas en las bibliotecas, o para corrige errores y advertencias del compilador.
Errores más comunes que he encontrado:
Cosas Unicode. Esto tomará el 90% del tiempo. Es molesto si el código hace un montón de manejo de cadenas de bajo nivel, pero la mayoría de los problemas se pueden solucionar fácilmente agregando algunos tipos de difusión.
el compilador perra cuando usa
c in [''a''..''z'']
. Se supone queCharInSet()
usarCharInSet()
para cadenas unicode.Si configura ShortDateFormat, obtendrá una advertencia del compilador de que debe usar FormatSettings.ShortDateFormat en su lugar. En el nuevo código, es una buena idea. Si está portando, simplemente ignórelo inicialmente si solo quiere comenzar.
Además, probablemente actualice sus bibliotecas de terceros a versiones más nuevas, para que no tenga que portarlas usted mismo. No es raro que aquellos hayan cambiado sus interfaces o funcionamiento, así que descargaría algunas versiones de prueba de esos para ver qué se ha cambiado.