domingo, 20 de julio de 2008

Migrando de Delphi a Lazarus

No es que me sobre el tiempo, ni siquiera que este aburrido, pero nuevamente me puse un desafío sobre mis espaldas que es realmente difícil de cumplir.
No es que migrar una aplicación de Delphi a Lazarus sea inviable, nada mas lejos de la realidad, por cierto, pero específicamente esta bella librería de Delphi que intento migrar usa DEMASIADOS mensajes a la Api de Windows...

Repasando los pasos para comenzar a migrar una aplicación de Delphi a Lazarus son muy simples.

1) Crea una estructura nueva, independiente de la que contiene a la aplicación Delphi, de modo de que lo que toques no afecte a tu aplicación Delphi (es básico pero muy pocos lo hacen).
2) Para cada archivo de proyecto delphi (solo para el dpr)

makepasx Proyect1.dpr

3) Para cada archivo .pas dentro de la unidad ejecuta el siguiente comando

makepasx unit1.pas

4) para cada formulario delphi ejecuta el siguiente comando

dfmtolfm unit1.dfm

5) Lazarus utiliza para cada form un archivo de recurso extensión lrs. Para generarlo:

lazres unit1.lrs unit1.lfm

Hecho. ya tenemos todo lo necesario para dar el primer paso en nuestro camino de 1000 kms (el mas importante), ahora solo queda compilar y ver.

Generalmente algunas funciones o llamadas varían un poco entre Delphi y Lazarus. Podría colocar algunas de ellas aquí, pero no tiene sentido porque son muchas. En lugar de eso les daré una forma de resolver las discrepancias de la manera mas simple, o por varios métodos que en general me hacen llegar al resultado correcto:

1) Si no encuentras un identificador o fuente busca las referencias en los fuentes de lazarus. Suena tonto? es lo mas simple, de esta manera puedes saber que unidad lo define y que objetos lo utilizan.

2) Si el identificador o método no existe en lazarus, ve a los foros de lazarus y busca por el. De seguro antes alguien choco con esa piedra y encontró como saltarla. ;)

3) Si nada de eso funciona, el amigo google viene al rescate. Puedes probar lazarus nombreendiscrepancia o agregarle la palabra reemplazo, etc.

Por último, puede suceder el caso como en la librería que intento migrar, que haya DEMASIADAS llamadas a la api de windows. En este caso el punto 2 y el 3 suelen ayudar mucho.

4) Subscribete a los grupos de lazarus y fpc. Quien mejor que quienes ya han estado ahi pueden ayudarte? Incluso si es una funcionalidad no suportada pueden ayudarte a implementarla y se producirá el milagro: la librería de lazarus y fpc se enriquece. :)

En otras entregas les ire comentado acerca de mis progreso en la conversión y como se fueron resolviendo los problemas.

Namaste.

1 comentario:

migue_linux dijo...

Que tal, interesante, no sabia que se tenia que hacer todo eso para migrar a Lazarus.

Yo estoy tratando de hacer lo mismo, pero no puedo instalar el Lazarus, me manda el siguiente error:
linux-40j0:/usr/Lazarus # rpm -i lazarus-0.9.26.2-0.i386.rpm
error: Failed dependencies:
/usr/bin/make is needed by lazarus-0.9.26.2-0.i386
gdk-pixbuf is needed by lazarus-0.9.26.2-0.i386
gtk+ is needed by lazarus-0.9.26.2-0.i386
libgdk-1.2.so.0 is needed by lazarus-0.9.26.2-0.i386
libgdk_pixbuf.so.2 is needed by lazarus-0.9.26.2-0.i386
libglib-1.2.so.0 is needed by lazarus-0.9.26.2-0.i386
libgtk-1.2.so.0 is needed by lazarus-0.9.26.2-0.i386
linux-40j0:/usr/Lazarus #

Me podrias ayudar a resolverlo?,
Sé lo que me esta diciendo, pero no se como resolverlo, los archivos GDK ya los tengo, pero donde los instalo o que debo hacer,
te informo que tengo instalado openSUSE 11.0

Este es mi correo namorb@hotmail.com