Ver Mensaje Individual
  #7  
Antiguo 25-09-2019
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 88
Reputación: 7
Javierus Va por buen camino
Cita:
Empezado por ArtPortEsp Ver Mensaje
Voy a migrar yo y un varias aplicaciones....
Si, uso MySQL... por?
Porque si usases TTable, entonces sería mucho más complicado.

En mi caso, lo que tenía que adaptar aplicaciones lo que he hecho es usar una única base de código, con condicionales para distinguir el código que corresponde a la versión vieja de Delphi, del de la moderna.

Utilizo dos copias de los fuentes, con una para cada versión, con un comparador, el Beyond Compare. Esto me permite hacer modificaciones en la versión nueva, comparar los fuentes, y realizar en los fuentes "viejos" los cambios necesarios para que funcione en ambas versiones (quizás con condicionales). Los DFM tienes que tenerlos en modo texto, y debes quedarte siempre con los de la versión vieja, porque los de la vieja van en la nueva, pero los de la nueva no van en la vieja.

Si usas librerías de terceros, entonces debes asegurarte de que haya versiones de todas ellas para la versión de Delphi que vayas a usar; si falta alguna, si puedes prescindir de ella, hazlo, y si no puedes, adáptala a D10 o sustitúyela por otra.

Puede que tengas componentes con propiedades que existen en la vieja y no en la nueva, como pasa con TkbmMemTable. Una posibilidad ahí es crearte un componente nuevo, p.ej. TkbmMemTableMIO, y sustituir uno por el otro en todos los .pas y .dfm. En la implementación del mismo para D10, le añades las propiedades que faltan, como propiedades que no hacen nada, e incluso que no se graban en el dfm. De ese modo no te dará error al abrir los formularios.

En la práctica, la adaptación ha supuesto para mí modificar los fuentes originales (en producción) hasta conseguir unos fuentes que funcionen en ambas.

En cuanto al Unicode, te dará dolores de cabeza, pero acabarás por salir adelante, vía pruebas del código.

También he tenido que crear varias unidades de apoyo, que me permitiesen resolver incompatibilidades sin tener que recurrir a montones de IFDEF. Por ejemplo, en D10 se recomienda CharInSet en vez de (x in ['a..'z','A'..'Z']). He implementado una función CharInSet en D5, en una unidad de "StringTools", y he modificado tooodos los sitios en los que usaba la notación de sets por la de CharInSet, de modo que el código funcione en ambas versiones. Lo mismo con ShortDateFormat, etc. Se tratan de forma distinta, y he implementado una "DateTools" que me permitiese usar el mismo fuente en mis unidades

Ánimo y suerte
Responder Con Cita