![]() |
Migrar o no migrar
Hola a todos!
Tengo una aplicación creada en Delphi 7 que uso en mi negocio y que he ido ampliando, haciendo correcciones, etc. desde hace ya varios años y actualmente estoy llegando a un punto en el que creo que estaría "lista". Con "lista" me refiero a que las funcionalidades básicas de lo que preciso ya estarían realizadas. Pero como me conozco y se que más adelante le voy a agregar más funcionalidades les quería pedir que me ayuden a decidir entre las siguientes opciones: Opción 1º) Seguir atado a Delphi 7 y las nuevas funcionalidades que se me ocurran programarlas en el. Es la opción más cómoda y me evitaría los problemas de migrar (estuve leyendo varios hilos en este foro sobre migración desde versiones antiguas de Delphi a versiones más nuevas y parece ser la opción más sensata). Opción 2º) Empezar de a poco a migrar el programa a Lazarus o a Delphi Community. Por las pocas pruebas que hice tendría que renegar bastante, pero tendría la ventaja de que una vez hecha la migración todas las nuevas funcionalidades ya las programaría desde un entorno actual. Opción 3º) Crear las nuevas funcionalidades en un programa aparte, desarrollado desde el nuevo entorno (Lazarus / Delphi Community). La desventaja sería que tendría 2 programas, el viejo para lo esencial y el moderno para las nuevas funcionalidades. La ventaja es que me serviría como excusa para "ponerme al día". Opción 4º) No se si es posible, pero me gustaría poder crear las nuevas funcionalidades en el nuevo entorno e integrarlas al sistema viejo, no como un programa aparte si no llamándolas desde el programa viejo. Cualquier consejo será bienvenido! Saludos! ^\||/ |
Te puedo comentar mi poca experiencia al respecto.
He intentado usar las nuevas versiones de Delphi pero... Delphi 7 es más liviano, rápido de instalar y correr. Funciona bien desde Windows XP a Windows 10, me acomoda mucho el usar CnWizards, librerías un montón de código y trucos que hay en la web. - Por otra parte, Lazarus no es tan compatible en librerías y proyectos al migrar desde Delphi. - Delphi Community no es tan gratis. Creo que la licencia la puedes usar por 1 año y luego renovarla hasta quién sabe cuando. Esa incertidumbre no me gusta. Lazarus para proyectos nuevos y no tan ambiciosos para practicar y ver su potencial. Delphi Commnity para algo que requiera una mejor interface o tecnología nueva que no me funcione en Dephi 7. |
Quedarse obsoleto no tiene sentido.
Llevo +20 años programando y he hecho migraciones que otros considerarían "brutales". De FoxPro DOS a windows, de FoxPro windows a .NET Web, otra de python a c#, luego a python de nuevo. Pero mi proyecto principal le gana a todas: De VB.NET/Pocket PC a Objective-c/iPhone a Swift a F#/Xamarin y ahora a Rust/Web y de esa luego le agrego otra vez Swit/iOS y luego Kotlin/Android. Digo esto para que vean que no hay que tenerle miedo a haces reescrituras. --- Con todo, hay que ponerle algo de cabeza a esto. Lo mas importante es tener un objetivo claro, así sea simple. De ahi:
Esto es lo basico, ademas
Una gracia de delphi es que a pesar de todo, no ha cambiando tanto. Llevo sin programar Delphi unos años... y de pronto tuve que hacer algo en freepascal. Me tomo nada retomar el ritmo. Así que si sigues en el lenguaje, el cambio es MUCHO mas fácil (mientras por los laditos haces lo de arriba): Empieza a limpiar, pulir y aclarar el código, quizás aplicando un auto-formater. Empieza a separar lógica de negocios de la parte UI. Casi todo eso va a pasar limpio a versiones mas modernas de delphi/freepascal. Si lo haces bien, deberías quedar con MENOS código que antes. De igual manera, refactoriza tu db para simplificar tu lógica de datos. En el caso que tengas una dependencia fuerte con un componente obsoleto (como BDE) cambia esos primero. Tu db debe estar solida y al ultimo pelo. Y cómo manejas ambos proyectos a la vez? Si refactorizas lo que tienes, puedes hacerlo todo en un rama del control de codigo fuente! Una vez hecho los preparativos, el paso es solo tiempo, pero es relativamente facil. Te digo que si uno tiene la logica de negocios clara, incluso pasar de lenguajes no es tan dificil. Es posible que todo esto parezca "mucho" trabajo, pero realmente es PURA re/organizacion. |
Cita:
Yo tengo aplicaciones que compilan en Delphi6 y Delphi 10.3 Rio de forma indistinta con un par de {$IFDEF}. Depende del código que utilices y sobre todo componentes de terceros que deban estar disponibles en la nueva versión. Si tu aplicación no usa componentes de terceros y el código es bastante estandard no deberías tener mayores problemas. Otro tema es la Base de datos y componentes de conexión que estés utilizando. No das muchos detalles en ese sentido, cosas que son importantes para evaluuar la decisión. Cita:
Cita:
No comentas nada de la estructura de tu aplicación y del volumen que tiene. No es lo mismo migrar una aplicación con 20 formularios que con 200. Puedes extraer código a DLLs o BPLs de forma paulatina. Posteriormente ir migrando la interficie a una nueva versión, mientras comporates código que has extraído. Muchas opciones, y no hay ninguna que sirva para todos los casos. |
¡Muchísimas gracias a los 3! v:-)v
Sus consejos y experiencias me sirven muchísimo!!! Y me dan ánimos de meterle ganas a la migración. :) Voy contestando: Cita:
Cita:
Pero si, es algo que podría cambiar y no estaría bueno. Cita:
Cita:
Cita:
La migración también puede ser una buena excusa para mejorar aún más eso. Cita:
¿Algún artículo o libro que me aconsejes sobre el tema? Cita:
Cita:
Tendría que ver el tema de los reportes (usaba Rave) pero ya estuve leyendo en este foro sobre alternativas. La Base de datos es Access y accedo a ella a través de ADO. Cita:
Cita:
Me pondré a investigar sobre el tema. Vuelvo a agradecer todos los consejos. Los aprecio muchísimo, ya que yo programo por hobby. Porque la verdad que sería más fácil comprarme un programa y listo. Pero nada más lindo que poder modificar y actualizar el programa que uso todos los días. Saludos!!! ^\||/ |
Cita:
Como? Hace una BPLs por version y desde cada una referencia el codigo compartido. Algo asi como:
Asi que a la final es un feliz si :) Cita:
Ahora bien, puedes no migrar tu proyecto actual y solo hacerlo en el nuevo, que es mejor en cuanto a que no te estresas justo ahora. Cita:
El libro mas recomendado para este tema es https://www.amazon.com/Working-Effec.../dp/0131177052. Pero en general es muy simple. En el caso de Delphi siendo un lenguaje OO mira los principios de SOLID: https://es.wikipedia.org/wiki/SOLID Deberias al menos tener un "2 niveles" logico, en vez de combinar strings y armar sql en todos lados, deberias tener una unica clase (o conjunto cerrado) como
Investiga sobre el tema de refactorizacion y hacer codigo testeable. Si tu codigo se puede testear sin problemas, al 100% que esta bien separado. |
Cita:
Cita:
El link que me pasaste de Amazon me sugirió dos libros más que también tienen muy buena pinta: - Clean Code (Robert C. Martin) - Refactoring: Improving the Design of Existing Code (Martin Fowler) Agradezco muchísimo la información que me han pasado. ^\||/^\||/^\||/ Voy a empezar por leer y hacer apuntes de las cosas tengo que corregir. Luego empezaré de a poco a hacer la migración y las pruebas (una vez que tenga más en claro por dónde arrancar). De momento este hilo me ha dado muchísimas ideas. :) Saludos y nuevamente gracias!!!!! ^\||/^\||/^\||/ |
Cita:
En ese caso yo haría una pruebas (puedes usar la versión Community), porque a lo mejor te llevas una sorpresa y la migración es más sencilla de lo que te esperas. Las nuevas versiones incluyen ADO, así que por ahí no tendrás problemas. Deshabilita la parte de Rave y revisa los 2 o 3 componentes (si compilan, si hay versión nueva o si puedes deshabilitarlos), porque a lo mejor consigues migrar con poco trabajo. Yo tengo proyectos que compilan sin cambios en Delphi6 hasta Delphi 10.3 Rio. Al menos te dará una idea de lo que te puede costar. Luego si realmente lo migras, ya puedes cambiar a FireDAC, tal y como comenta [mamcx], aunque para programas pequeños, yo he usado ADO+Jet y no funciona mal. Si necesitas más rendimiento si que debes plantearte ir hacia un SGBD "serio". Cita:
Pues si no usas componentes de terceros y "cosas externas", deberías poder abrirlos en nuevas verisones sin problemas. Y si tienes que hacer algún cambio tampoco son muchos. Cita:
La respuesta tal y como comenta [mamcx] es que NO puedes llamar a una BPL hecha en Delphi 10.3 desde un ejecutable hecho en D6. Al menos con las ventajas de ua BPL. Si ese es el caso, deberías usar DLL's. Tal vez no me expliqué bien. |
Cita:
|
¡¡¡Muchas gracias Germán y mamcx!!! ||-||
Cita:
De mientras voy ganando tiempo leyendo y haciendo borradores de ideas en papel. Ayer ya empecé con eso. Me puse ansioso. :D Cita:
Aprovecharé la migración para hacer "limpieza" y una vez que tenga todo más prolijo estudiaré bien el tema de cambiar de BD. Aparte de FireDAC me interesó mucho lo de SQLite. Con el tema de las DLL/BPL, quizás sería mejor pasar a BPL las cosas de Delphi 7 que no tenga en Delphi 10. Creo que pasaré a BPL la parte de RAVE, que no es mucha y es la parte más engorrosa del programa. Saludos y mil gracias de nuevo!!!! ^\||/^\||/^\||/ |
Cita:
|
Muchas gracias Casimiro!
Cita:
Saludos! ^\||/^\||/^\||/ |
Cita:
Y el "problema" no es tan multiples usuarios sino múltiples hilos/programas. Ahora, si estamos hablando de MUCHISIMOS usuarios hay si no es tan bueno :) |
Sí, tengo hecho proyectos Android con Sqlite en modo multiusuario y están funcionando perfectamente.
Pero para eso es mejor usar Firebird o PostgreSql, como bien sabes. |
Cita:
Lo se y eso quería decir (parece que en este hilo me estoy explicando fatal). :(:(:( |
Cita:
La nueva versión Community es posible que tarde unos meses. Puedes descargar la actual, empezar con la pruebas, y cuando salga la nueva, compilará seguro sin problemas, lo que estés haciendo con la 10.3. |
Cita:
Entonces el fin de semana me bajo la actual para ir probando y de paso les cuento como me fue. Saludos! ||-|| |
Buenas!
Quería decirles que estuve jugando con Delphi Community y el programa compila sin hacer prácticamente ningún cambio (solo quitando la parte de los reportes y los componentes de terceros). :) Obviamente que habría que probar exhaustivamente todo para estar seguro, pero que compile ya es una buena noticia. Me hace algunos defectos estéticos que luego iré viendo como acomodo (algunos son detalles tontos; por ejemplo en los DbGrid y StringGrid lo solucioné con el DrawingStyle en "gdsClassic"). En Lazarus no tuve tanta suerte. Tendría que hacer muchos cambios para que al menos compile. Igualmente cuando terminé la limpieza del código voy a intentarlo de nuevo. PD: Que lindo que es el StringGrid que trae Lazarus. Tiene prácticamente todo lo que he tenido que buscar en componentes de terceros. ¿Por que Delphi prácticamente no ha agregado características a este componente?. :( Saludos! ^\||/^\||/^\||/ |
Cita:
|
Gracias MAXIUM! ^\||/^\||/^\||/
Lo probaré. Ahora estoy usando este: http://users.otenet.gr/~tsoyran/THyperGrid.htm Saludos! ^\||/^\||/^\||/ |
La franja horaria es GMT +2. Ahora son las 02:14:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi