Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=26)
-   -   Windows CE y Delphi (https://www.clubdelphi.com/foros/showthread.php?t=49218)

kakarotv5 16-10-2007 14:53:39

Windows CE y Delphi
 
Hola, me han encargado un proyecto para que funcione bajo Windows CE y me gustaría saber si se puede hacer con Delphi.

¿Es Delphi compatible con Windows CE?

Saludos.

Nasca 16-10-2007 15:27:09

Mira lazarus, tiene una interfaz (personalidad?) para los componentes LCL (los VCL de lazarus) para wince.
No lo he utilizado con wince, pero si que le voy a sacar partido a la interfaz LCL de gtk1 para empotrar controles de presencia y de costes en viejos equipos con linux. La verdad que en casos como este se ven las ventajas de usar distintas interfaces de Lazarus. Por ahora me tiene gratamente sorprendido aunque también es cierto que le faltan numerosos componentes que lo harían una alternativa real y multiplataforma a Delphi.

Neftali [Germán.Estévez] 16-10-2007 16:04:22

Revisa esto.
Creo que debes pensar en .NET

kakarotv5 16-10-2007 17:11:31

Cita:

Empezado por Neftali (Mensaje 238849)
Revisa esto.
Creo que debes pensar en .NET

Ya veo, ¿entonces Delphi 6 no me serviría verdad?

kakarotv5 16-10-2007 23:55:43

Me he bajado un emulador de Windows CE y he intentado correr en él una aplicación de Delphi 6 (un 'hola mundo') y me sale el siguiente error:

Código:

Fatal Application Error

Application Project1.exe has performed an ilegal operation and will be shut down. If the problem persists, contact the program vendor.

Program: Project1.exe
Exception: 0xC0000005
Address: 6F480D00

Después he intentado dos programas más (dos 'hola mundo') uno hecho en Free Pascal y otro hecho bajo Dev-C++ y me sale lo siguiente en ambos:

Código:

Cannot find 'hola' (or one of its components). Make sure the path and filename are correct and that all the required libraries are available.
No se si todos estos compiladores que he usado son incompatibles con Windows CE o es por alguna otra razón que desconozco.

¿Me echais un cable?

Muchas gracias y un saludo.

kakarotv5 17-10-2007 00:41:27

Cita:

Empezado por Nasca (Mensaje 238834)
Mira lazarus, tiene una interfaz (personalidad?) para los componentes LCL (los VCL de lazarus) para wince.

¿Entonces si yo me bajo el Lazarus (Lazarus arm-wince crosscompiler installer for windows host) le instalo en Windows XP y hago un programa en mi PC de sobremesa de casa luego lo puedo ejecutar en Windows CE?

Nasca 17-10-2007 01:33:51

Si lo compilas con la interfaz de LCL wince debe ser así. O eso creo :) por desgracia no lo he probado.

En linux por ejemplo puedes diseñarlo con Lazarus en gtk1.2 y compilar para que el programa sea qt o gtk2.

En windows puede ser win32, wince e incluso qt.

Pero eso en teoría. Mira el wiki de lazarus para buscar información útil del estado de cada interfaz. Esta información te puede dar una idea rápida del estado de cada interfaz:
http://wiki.lazarus.freepascal.org/Roadmap

Aquí información sobre LCL wince:
http://wiki.lazarus.freepascal.org/i...s_CE_Interface
http://wiki.freepascal.org/index.php/WinCE_port

La utilidad real de Lazarus para wince dependerá de la complejidad de tu programa. Y sino ya sabes: .net o java.

Ten en cuenta que la interfaz del propio Lazarus no tiene que ser la misma que la de tu programa.

Cuenta experiencias si sigues investigando, yo también recién empecé con Lazarus.

kakarotv5 17-10-2007 14:34:16

Cita:

Empezado por Nasca (Mensaje 239003)
Cuenta experiencias si sigues investigando, yo también recién empecé con Lazarus.

Bien así nos ayudamos mútuamente, si lo consigo lo pondré aquí.

Gracias por la información, creo que estoy cerca de la solución. Me he leído uno de los documentos que me has puesto (Windows CE Interface) y básicamente lo que hay que hacer para que funcione es (hay dos maneras esta y otra manual más complicada):

1º Bajarse el Lazarus e instalarlo.
2º Bajarse el add-on para Windows CE e instalarlo.
3º Cambiar las siguientes opciones del compilador (desde Proyecto/Opciones del Compilador):
* Widget set (desde la pestaña Rutas de Proyecto/Opciones del Compilador)
* Target OS (desde la pestaña Código de Proyecto/Opciones del Compilador)
* Target CPU (desde la pestaña Código de Proyecto/Opciones del Compilador)

Aquí es donde tengo problemas, en Widget set si elijo elijo cualquier opción que no sea por defecto (win32) y luego intento compilar me sale el siguiente error:

Código:

project1.lpr(6,28) Fatal: Can´t find unit Interfaces
El caso es que he encontrado dos units Interfaces.pas, una se encuentra en C:\lazarus\lcl\interfaces\carbon y la otra en C:\lazarus\lcl\interfaces\gtk2 por lo que supongo que he de hacer algo para que el compilador las busque donde es debido.

EDITO: He encontrado la solución a este problema en un blog, para que funcione correctamente hay que poner en Other Units Files (-Fu) (Delimiter is semicolon): lo siguiente: $(LazarusDir)\lcl\interfaces\$(TargetOS)\

Después si cambio Target OS o Target CPU por algún valor que no sea (Por defecto) y doy a aceptar me sale el siguiente diálogo de error:

Código:

Error
 
The system.ppu was not found in the FPC directories. Make sure fpc is installed corectly and the fpc.cfg points to the right directory.

Este otro error no se bien a que se deberá, no he encontrado aun la solución para este otro error, a ver si lo sacamos entre todos.

El caso es que he encontrado dos archivos system.ppu, uno se encuentra en C:\lazarus\fpc\2.0.4\units\i386-win32\rtl y el otro en C:\lazarus\fpc\2.2.1\units\arm-wince\rtl por lo que supongo que he de hacer algo para que el compilador le busque donde es debido.

¿Sabeis como solucionar esto?

EDITO: Al final solucioné el error, era porque las versiones FPC (Free Pascal) eran diferentes, las versiones de FPC del instalador de Lazarus y la versión del add-on han de ser iguales.

También hay que cambiar la Ruta de compilador (ppc386.exe) c:\lazarus\fpc\2.2.1\bin\i386-win32\fpc.exe (desde Entorno / Opciones del Entorno ...) por esta C:\lazarus\fpc\2.2.1\bin\i386-win32\ppcrossarm.exe

Aun así no me funciona ningún programa que haga bajo el emulador de Windows CE Version 5.3.0.26.

Saludos y gracias de antemano, espero vuestra ayuda.

Nasca 17-10-2007 17:43:44

Creo que tienes que compilar las librerías wince. Si ves como se activan las qt en linux puede darte una idea, pero por si suena la flauta.

Entorno -> Configure "Build Lazarus"
Selecciona wince pon Construir LCL a Clean + Build y el resto de opciones (para compilar el entorno) a None.

Construye y esto debe haberte compilado las LCL para wince.

Yo al menos fue así como compilé el soporte de LCL para qt.

kakarotv5 17-10-2007 21:11:29

Cita:

Empezado por Nasca (Mensaje 239195)
Creo que tienes que compilar las librerías wince. Si ves como se activan las qt en linux puede darte una idea, pero por si suena la flauta.

Entorno -> Configure "Build Lazarus"
Selecciona wince pon Construir LCL a Clean + Build y el resto de opciones (para compilar el entorno) a None.

Construye y esto debe haberte compilado las LCL para wince.

Yo al menos fue así como compilé el soporte de LCL para qt.

He hecho lo que me has dicho y después de compilar unas cuantas units me da los siguientes errores:

Código:

C:\lazarus\lcl\interfaces\wince\WinCEWinAPIEmu.pp(234,54) Error: Call by var parameters have to match exactly: Got "LPRECT" expected "RECT"
C:\lazarus\lcl\interfaces\wince\WinCEWinAPIEmu.pp(304,72) Error: Call by var parameters have to match exactly: Got "Pointer" expected "SIZE"
C:\lazarus\lcl\interfaces\wince\WinCEWinAPIEmu.pp(454) Fatal: There were 2 errors compiling module, stopping

EDITO: Como dije dos posts más arriba, ya no tengo problemas a la hora de compilar proyectos (aunque si intento compilar las LCL para wince si que me da errores también).

Ahora os pregunto una cosa, yo compilo un programa (un simple formulario en blanco) con las siguientes opciones del compilador:

Tipo de Widget LCL (various): wince
OS objetivo: (-T): WinCE
CPU objetivo: (-P): arm


¿Es normal que si yo ejecuto desde Windows XP el programa que he compilado me salga el siguiente error?

Código:

C:\lazarus\Proyectos\project1.exe no es una aplicación Win32 válida.
Creo que voy por buen camino puesto que lo que he compilado en teoría sólo debería de funcionar bajo Windows CE y arquitectura arm y no bajo mi Windows XP.

EDITO: Pues si que estaba en lo cierto.

¡Lo conseguí por fin!

Me bajé el Microsoft Windows Mobile 5.0 MSFP Emulator Images y he podido ejecutar mi programa compilado en Windows XP. Con el emulador Microsoft Windows CE 5.0 no he conseguido que funcione pero me doy por satisfecho.

Por cierto sólo un formulario en blanco ya ocupa 10 MB, qué pasada, por ahora es la única pega que le veo pero menos da una piedra.

Ahora sólo me queda la duda, ¿tendrá Lazarus muchas limitaciones para llevar a cabo mi tarea (con que fuera igual que Delphi me conformaría)?

Gracias a todos por ayudarme y espero que este post le sirva a alguien.

Un saludo.


La franja horaria es GMT +2. Ahora son las 19:12:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi