Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Error al ejecutar aplicación en MacBook (https://www.clubdelphi.com/foros/showthread.php?t=80043)

defcon1_es 30-08-2012 19:06:10

Error al ejecutar aplicación en MacBook
 
Hola a tod@s.
Casi que debería haber titulado el post como "Mis peripecias con Delphi XE2 + Firemonkey + XCode y la madre que los parió..."

Os cuento:

Estoy desarrollando una aplicación Firemonkey con la idea de que funcione en un iPad.
Para ello dispongo de Rad Studio XE2 (con la última actualización Update 4 HotFix 1) y
de un MacBook Pro (de segunda mano comprado en USA) con OS X 10.6.8 (Snow Leopard) y Xcode 3.2.6.

Asigno el perfil remoto en Delphi XE2 para la plataforma OSX para enviarlo al MacBook y va perfecto,
se muestran las fichas de los clientes (de una BD Sqlite usando un driver dbexpress para sqlite), puedo hacer pedidos, y todo para lo que está pensada la aplicación,
pero si ejecuto directamente el App que Delphi XE2 deja en el MacBook,
lo primero que me aparece es un mensaje en una ventana indicando el error "Exception in safecall method", pulso OK y me aparece mi formulario principal.
En cuanto pulso cualquier otro botón, da igual si tiene evento OnClick o no, me vuelve a salir la ventana con el error anterior y pulsando repetidas veces el botón OK,
se cierra el programa.

También he intentado compilar el proyecto con XCode, preparándolo con el ejecutable dpr2xcode.exe, y me sale el error:

Free Pascal Compiler version 2.6.0 [2012/08/29] for i386
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: Darwin/iPhoneSim for i386
Compiling /Users/User/Documents/DelphiXE2/../iPADTest.pas
Fatal: Can't open file "iPADTest.pas"
Fatal: Compilation aborted
Command /bin/sh failed with exit code 1

Bien, pues revisando el fichero .sh que (creo que) genera Delphi en el Mac, veo lo siguiente:
-XR$SDKROOT -FD$PLATFORM_DEVELOPER_BIN_DIR "$PROJECT_DIR/../$PROJECT.pas"
y pienso ¿por qué se pone /../?, y me voy a la opción del menú Xcode "Project / New Build Phase / New Run Script Build Phase",
y copio y pego el contenido del fichero .sh modificando "$PROJECT_DIR/../$PROJECT.pas" por "$PROJECT_DIR/$PROJECT.pas",
y ahora me salen un montón de mensajes de compilación, indicando que compila todas los .pas de firemonkey...
-casi me caigo de la silla de la emoción-

pero al final dió otro error...
"Compiling Principal.pas"
"Principal.pas(6,9) Error: Duplicate identifier "SYSTEM""

y pienso: -lo mismo es que hay que quitarle System. al código fuente en los uses-

lo corrijo eliminando System. de ese fichero .pas y luego dió otro error...

"Compiling ListaClientes.pas"
"Fatal: Can't find unit FMX used by unit ListaClientes"

joder... -pienso yo- ahora no me encuentra la unit FMX... un momento, ¿la unit FMX?, pero si he visto como compilaba los pas de Firemonkey !!!

Pues, si, los compila, pero se llaman FMX_Types.pas, FMX_Colors.pas, etc.

En principio si sustituyo FMX. por FMX_ (añadiendo la directiva de compilación {$IFDEF FPC} en cada caso,
debería compilar el proyecto con el XCode, pero ¿qué pasa con las demás units como Data.DB, Data.Bind.Scope, etc.?


Se agradece cualquier comentario/experiencia al respecto.

defcon1_es 31-08-2012 13:06:16

Buscando en google, he visto más gente que le pasa lo mismo:

http://community.freepascal.org:8080...forum_id=24111

https://forums.embarcadero.com/messa...ssageID=460283

defcon1_es 05-09-2012 18:45:05

Pues resulta que para XCode sólo existen los .pas de Firemonkey, pero de dbexpress, nada de nada.

Así que si quieres crear una aplicación para iPad con Delphi XE2 + FireMonkey, puedes olvidarte de usar:

- dbexpress
- livebindings (no estoy seguro al 100%)
- DataSnap (no estoy seguro al 100%)

y de cualquier otro componente que no esté disponible para Free Pascal.

Voy a tener que hacer toda la presentación de los datos "a mano",
creando una instancia de la clase "TSQLite" (definida en SQLite3db.pas de Free Pascal)
y realizar la carga de los datos (sentencias SELECT) tal que así:
Código Delphi [-]
procedure TForm1.CargarDatos; 
{$IFDEF FPC} 
var   SQL, Row: String;   
       DB: TSQLite;   
       SL: Classes.TStringList;   
       NewItem: TListBoxItem;
{$ENDIF} 
begin 
{$IFDEF FPC}   
  DB := TSQLite.Create(Varios.DBFileName);    // Get the records back and list them in the memo   
  SL := Classes.TStringList.Create;   
  SQL := 'select * from basedatos';   
  DB.Query(SQL, SL);    
// Eliminar el nombre de las columnas (primera fila)   
  SL.Delete(0);    
  for Row in SL do   
  begin     
    NewItem := TListBoxItem.Create(FishList);     
    NewItem.Text := UnQuoteStr(Row, '"');     
    NewItem.Font.Family := 'Arial';     
    NewItem.Font.Size := 24;     
    FishList.AddObject(NewItem);   
  end;   
  SL.Free;    
  DB.Free; 
{$ENDIF}
end;

Ejemplo: http://www.youtube.com/watch?v=77HYR...feature=relmfu

PD:Espero que esto oriente a todo aquel que tenga pensado hacer aplicaciones para iPad/iPhone con Delphi XE2 + FireMonkey + SQLIte


La franja horaria es GMT +2. Ahora son las 19:48:28.

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