HowTo : Lazarus + SQLite + WinCE + KOLCE

Este articulo no es cosecha mia, es una contribucion de un Anonimo. :)

En resumen, es una guia para poner en marcha un entorno de desarrollo de aplicaciones wince con soporte sqlite3 y usando los componentes de KOLCE.

INSTALACIÓN:

Primero hemos de descargar la siguiente versión de Lazarus:

Lazarus-0.9.23-fpc-2.1.5-20070716-win32.exe

La instalamos en c:\lazarus

Nos descargamos también la siguiente versión de cross-arm-wince:

Lazarus-0.9.23-fpc-2.1.5-20070823-cross-arm-wince-win32.exe

y la instalamos también en el mismo directorio que el anterior.

Nos descargamos la librería sqlite3.dll para Win32 y la ponemos en C:\Windows\system32
Nota: Podemos descargar la librería ya compilada o descargar los fuentes en C y compilarla por nuestros medios con el Dev-C++ 4.9.9.2 por ejemplo.

Nos descargamos también la librería sqlite3.dll para WinCE (más tarde deberá de ponerse en la carpeta en la que esté el ejecutable de nuestra aplicación). Al igual que en el caso anterior podemos compilar los fuentes en C y obtener dicha librería.

Abrimos Lazarus, vamos a Componentes/ Abrir Archivo de paquete (.lpk) ... y seleccionamos el archivo C:\lazarus\components\sqlite\sqlite3laz.lpk

Hacemos click en Instalar, esto hará que se instale el paquete necesario para utilizar SQLite, se recontruirá Lazarus, este se cerrará y se volverá a abrir (si no se ha puesto el archivo sqlite3.dll para Win32 en la carpeta C:\Windows\system32 Lazarus no se abrirá).

Una vez hecho esto ya tenemos todo lo necesario para compilar una aplicación para WinCE. Pero antes hemos de configurar Lazarus para tal cometido.

CONFIGURACIÓN:

Vamos a Proyecto/ Opciones del Compilador ...:

Primero en la pestaña Rutas:

En Other Unit Files (-Fu) (Delimiter is semicolon) ponemos lo siguiente:

$(LazarusDir)\lcl\interfaces\$(TargetOS)\

Esto hará que el compilador encuentre la unidad interfaces.pp

En el desplegable Tipo de Widget LCL (various) seleccionamos wince

daniwince01.jpg

Después en la pestaña Código:

En el panel Target Platform:

En el desplegable OS objetivo: (-T) seleccionamos WinCE

En el desplegable CPU objetivo: (-P) seleccionamos arm

daniwince02.jpg

Una vez hecho esto podemos guardar esta configuración para no volver en un futuro a tener que cambiar los valores a mano. Pulsamos en Cargar/Guardar y hacemos clic en Save to file. Una vez que hayamos guardado la configuración hacemos clic en Aceptar.

Aun no hemos acabado de configurar Lazarus para que pueda compilar para WinCE, vamos a Entorno/ Opciones del Entorno y en Ruta del compilador (ppc386.exe) cambiamos:

c:\lazarus\fpc\2.1.5\bin\i386-win32\fpc.exe

por

c:\lazarus\fpc\2.1.5\bin\i386-win32\ppcrossarm.exe

daniwince03.jpg

Ahora hemos de construir el LCL de Lazarus para WinCE, para ello vamos a Herramientas/ Configure “Build Lazarus” ... seleccionamos wince en Interfaz LCL y ponemos todas las partes a None excepto LCL que la ponemos a Clean+Build y hacemos clic en Construir.

Una vez hecho esto ya estamos en disposición de poder compilar una aplicación realizada en Lazarus y con SQLite como motor de bases de datos.

Creamos el código de la aplicación en Object Pascal y la compilamos (Ctrl + F9), una vez hecho esto hemos de añadir el archivo sqlite3.dll para WinCE a la carpeta en la que se encuentre el ejecutable de nuestra aplicación y si todo ha ido bien podremos ejecutar nuestro programa en nuestra Pocket PC o en el emulador de Windows Mobile.

Una de las cosas que nos llaman la atención nada más empezar a ver resultados es el tamaño del ejecutable que obtenemos al compilar, aproximadamente 10 MB por un formulario vacío. Puede que en Win32 esto nos de igual pero en Pocket PC es importante que el tamaño de la aplicación sea lo menor posible.

He encontrado dos caminos para paliar este problema, uno de ellos es configurando las opciones del compilador (Proyecto/ Opciones del Compilador .../ Código/ Generar/ Código pequeño (-Og)) y luego desde la línea de comandos utilizar el comando strip:

strip

y otro camino factible es usando una librería expresamente diseñada para crear aplicaciones para WinCE, esta librería es KOL-CE.

INSTALACIÓN DE KOL_CE:

Descargamos el archivo kol-ce-2.80.zip lo descomprimimos y lo almacenamos en la carpeta c:\lazarus\components\

Abrimos Lazarus, vamos a Componentes/ Abrir Archivo de paquete (.lpk) ... y seleccionamos el archivo C:\lazarus\components\kol-ce-2.80\mck\MirrorKOLPackage.lpk

Hacemos click en Instalar, esto hará que se instale el paquete necesario para utilizar KOL-CE, se recontruirá Lazarus, este se cerrará y se volverá a abrir.

Una vez hecho esto ya tenemos todo lo necesario para compilar una aplicación con los componentes de KOL-CE.

Veremos los siguientes componentes:

daniwince04.jpg

CREANDO UN PROYECTO:

Para crear un proyecto con estos componentes no se hace del modo usual.

Primero hemos de crear una aplicación nueva y guardarla en un directorio. Una vez hecho esto ya podemos arrastrar el componente TKOLProject en el formulario, nos vamos a sus propiedades y en la propiedad ProjectDest ponemos el nombre que queramos que tenga nuestra aplicación, por ejemplo prueba.

Arrastramos el componente TKOLForm en el formulario guardamos todo y cerramos.

Ahora hacemos clic en Archivo/ Abrir y miramos dentro de la carpeta en la que guardamos antes el proyecto veremos que se han creado más archivos, elegimos abrir prueba.lpi y ahora si, ya podemos trabajar normalmente.

Si probamos a compilar la aplicación para WinCE obtendremos el siguiente mensaje de error:

C:\lazarus\components\kol\KOL.PAS(57901) Error: Error while linking

Esto es porque Lazarus no encuentra la variable de entorno en la que se encuentra el compilador, para subsanar esto hemos de declarar una variable de entorno en nuestro sistema.

Hacemos clic derecho en MI PC/ Propiedades/ Opciones Avanzadas/ Variables de entorno y en Variables de usuario hacemos clic en Nueva y ponemos lo siguiente:
En Nombre de variable ponemos: PATH
En Valor de variable ponemos: C:\lazarus\fpc\2.1.5\bin\i386-win32\ (que es la ruta en la que se encuentran los compiladores)

daniwince05.jpg

Una vez hecho esto ya podemos compilar aplicaciones con los componentes de KOL-CE y con las funciones del motor de base de datos de SQLite.

Comentarios

Actualizado! ;)

Tengo problemas para encontrar sqlite3.dll y instalarlo

me ocupe de hacer todos los pasos y no me funciono, daba un error 'ERROR: compiled unit FPC no found: system.ppu

¿ En que paso te da ese error ?

PD: No he podido responder antes :(

A mi tambien me da ese error, y he seguido todos los pasos.El error da una vez que has hecho todos los pasos y compilas una aplicacion simple.

Aunque no lo he comprobado ( espero poder hacerlo en breve para confirmar ) pero por lo que parece el compilador del proyecto y el compilador del entorno no lo teneis seleccionado para la misma plataforma.
O sea, comprobad los siguientes pasos Paso 1 , Paso 2 y Paso 3

Lo estoy probando con la version de lazarus 0.9.24 y no lo doy conseguido,hay que hacer alf¡guna modificacion??
Me dice que no encuentra el system.ppu en los directorios de FPC cuando voy hacer el paso de construir LCL de Lazarus para WinCE.
Habra que modificar algo en le fichero fpc.cfg??

Hola Manuel,

La comunidad lazarus avanza muy rapido y este articulo tenia sentido en su dia ya que no existia un "paquete" para poder compilar en win32 aplicaciones para wince.

Hoy solo hay que instalar el Lazarus 0.9.24href> y el paquete para wincehref> y una vez dentro de lazarus, en el menu "Proyecto" en opciones de compilador debes cambiar "Tipo de widget LCL" , "OS Objetivo" y "CPU Objetivo". Con esto ya tenemos todo para compilar nuestras aplicaciones para WinCE.

Si aun te interesa compilar tu propio fpc o lazarus desde fuentes puesdes hechar un ojo al articulo freepascal y lazarus version SVN para WinCEhref>

Saludos

Ah ok!!
He hecho lo que me has dicho,en el menu “Proyecto” en opciones de compilador cambiar “Tipo de widget LCL” , “OS Objetivo” y “CPU Objetivo”.
Una vez hecho esto me sigue dando error.
En el compilador le digo que use "c:\lazarus\fpc\2.2.0\bin\i386-win32\ppcrossarm.exe" y asi compila perfectamente pero a la hora de ejecutar me da error y dice que no reconoce el formato del fichero.A que se debe esto??
Y otra cosa,tengo que ejecutar el proyecto en un emulador de Pocket PC??

Si, el binario creado es para arm-wince y por eso no lo reconoce el Windows ya que es i386-win32. El binario creado para arm-wince debe ejecutarse en el emulador o en el dispositivo directamente :)

Vale,gracias por la aclaración.En que emulador se puede probar??Yo me he bajado el emulador de microsoft pero no me funciona porque no me reconoce ese archivo.Como se deberia de probar con un emulador??

Yo siempre habia trabajado con un dispositivo real pero he probado con Standalone Device Emulator 1.0 with Windows Mobile OS Images y funciona perfectamente. ( Debes instalarte tambien el Microsoft ActiveSync 4.2 )

Suerte!

Pues no se que puede pasar pero a mi no me funciona, o mas bien no se como debo de proceder.
Yo genero el proyecto arm en lazarus y lo compila todo perfectamente,y me crea un proyect1.exe (por ejemplo).
Luego tengo instalado el Standalone Device Emulator 1.0 with Windows Mobile OS Images y el Microsoft ActiveSync 4.2 pero no se como hacer para ejecutar el .exe que me ha creado el lazarus.
Como debo de proceder??
Gracias.

Puedes eliminar el 1er comentario, es un pingback a un enlace en mi web que ya no funciona. Gracias.

Soy nuevo en esto, he tenido problemas al instalar el kolce me genera un error 'Fallo la compilacion del paquete rx 1.0 ¿Desea eliminarlo?, no se si es que se cruzan algunos codigos pero a mi parecer no tiene nada que ver una cosa con la otra.

Le agradeceria mucho la ayuda.

Pienso lo mismo, rx no tiene mucho que ver con KOLCE

Añadir nuevo comentario

Filtered HTML

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
CAPTCHA de imagen
Introduzca los caracteres mostrados en la imagen.