Delphi RIO y FMXLinux

Hola amigos, en esta ocasión toca hablar del nuevo y esperado Delphi para Linux Desktop y que le han llamado FMXLinux . Comenzaremos por dar su definición y los pasos a seguir para la configuración del ambiente de desarrollo, terminando con la ejecución de un ejemplo simple, si lo adivinaron…. el típico «Hola Mundo». 🙂

Ésta implementación Linux para Firemonkey es un complemento adicional que se instala en las ediciones Enterprise y Architect de Delphi y RAD Studio. Está disponible para clientes Delphi y RAD Studio Enterprise que cuentan con la Suscripción de actualización y la podrán descargar a través del GetIt Package Manager.

FireMonkey_for_Linux

Características principales de FMXLinux

– Permite crear aplicaciones GUI para Linux, extendiendo el framework de plataforma cruzada FireMonkey de Delphi.

FMXLinux expande el soporte de Delphi a las distribuciones populares de Linux.

– Incluye varios estilos de interfaz de usuario listos para usar.

– Muchos de los componentes de FMX, como grids, widgets, etc. funcionan perfectamente en clientes Linux.

– Tiene soporte de WebKitGTK para ejecutar una aplicación FMXLinux como una aplicación web HTML5 en el navegador.

Pre-Requisitos

Antes de instalar FMXLinux, es necesario tener instalado el soporte de la plataforma Linux para Delphi. Podemos verificar si tenemos instalado Delphi Linux 64-Bits desde el menú Tools > Manage Platforms como se muestra en la siguiente imagen:

Una vez que nos aseguramos que tenemos instalada la plataforma Linux, ya podemos descargar e instalar el complemento FMXLinux, para ello vamos al menú Tools > GetIt Package Manager, buscamos por «fmxlinux» y nos mostrará dos descargas, el complemento y ejemplos.

Instalamos el complemento y si lo deseamos descargamos los ejemplos para probar el funcionamiento, Al final del proceso se reiniciará el IDE.

Por supuesto necesitamos una maquina linux para poder correr nuestros programas; en mi caso instalé Ubuntu Desktop 16.04.6

Se preguntarán porque una versión antigua… Bueno, les diré que antes de instalar ésta versión de Ubuntu, instalé dos versiones mas actuales.

– Ubuntu 18.04.2 LTS
– Ubuntu 19.04

Sin embargo, no pude configurar el SDK de ubuntu para que funcionara con éstas versiones de Ubuntu Desktop, al final tuve que instalar la versión que mencioné y el SDK se instaló sin problemas, debido a mi desconocimiento de Linux perdí 3 noches intentando instakar el SDK sin éxito hasta que en un último intento funcionó con Ubuntu 16.04.6.

PD: Recien me he enterado que mi buen amigo Germán Estévez (Neftalí) tiene instalada la versión 18.04 y funciona correctamente.

Lo dicho, tengo que estudiar Linux 🙂

Instalar Linux SDK

Para instalar el SDK de Linux se requiere de instalar un repositorio, abrimos una terminal y escribiremos las siguientes instrucciones:

sudo add-apt-repository ppa:ubuntu-sdk-team/ppa

sudo apt install ubuntu-sdk

Instalar «Platform Assistant» ( PAServer ) en Linux

Necesitamos instalar «Platform Assistant» en Linux para construir e implementar aplicaciones de Linux. PAServer le permite usar el Administrador de implementación, importar el SDK de Linux y realizar una depuración remota en un sistema Linux, tal y como se hace con Android, iOS, OSX, etc.

Para instalar PAServer en Linux siga estos pasos:

– Copie el archivo LinuxPAServer20.0.tar.gz a un directorio local de la máquina Linux.

– Abra una Terminal.

– Vaya al directorio donde se localiza el archivo LinuxPAServer20.0.tar.gz.

– Descompacte el archivo LinuxPAServer20.0.tar.gz con el siguiente comando tar –xvf LinuxPAServer20.0.tar.gz.

– Se creará el subdirectorio PAServer-20.0. Y aquí encontrará los binarios de la «Platform Assistant».

Instalar dependencias en Linux

Para usar características gráficas en su aplicación de servidor, es necesario instalar algunas dependencias. No se requiere instalar todo el sistema X11 en la maquina. Para instalar dependencias en Ubuntu/Debian, abra una Terminal y escriba lo siguiente:

sudo apt install libgl1-mesa-glx libglu1-mesa libgtk-3-common libgstreamer1.0 libgstreamer-plugins-base1.0

Configuración de FMXLinux

Al instalar FMXLinux a través de GetIt, el sistema registra un «DLL Expert» que agrega el menú contextual la opción «Agregar plataforma Linux» que se indica a continuación y también agrega la carpeta de la biblioteca del repositorio de catálogo a la Ruta de la biblioteca para la plataforma Linux. Puede verificar esto en Tools > Options > Language > Delphi Options > Library y elegir Linux de 64 bits.

Crear un perfil de conexión

Para crear el perfil de la conexión es necesario que PAServer esté en ejecución en la máquina Linux, para ello abra una terminal y entre al directorio donde se ha descompactado el archivo LinuxPAServer20.0.tar.gz y ejecute el comando ./paserver como se muestra en la imagen siguiente:

A continuación entramos a Delphi RIO en el menú Tools > Deployment > Connection Profile Manager y presionamos el botón [Add], agregamos la plataforma, la máquina Host, el puerto y la contraseña (si ha solicitado una), una vez que hemos llenado las propiedades de la conexión, probamos que se conecte correctamente presionando el botón [Test Connection] y si todo sale bien presionamos el botón [Save] y salimos.

Ya estamos listos para construir nuestra primer aplicación Linux. Abrimos (File > Open) o creamos un nuevo proyecto Firemonkey (File > New > Multi-Device Application) .

A continuación presionamos el botón derecho del mouse sobre el Proyecto y seleccionamos Add Linux platform.

Seleccionamos la plataforma Linux de 64 bits (en mi caso Ubuntu 16.04.6 LTS -fmxLinux profile) e implementar muestras aplicaciones GUI en Linux. Hay que asegurarnos que PAServer se está ejecutando en la máquina Linux de destino.

Atención: Al crear una aplicación FMXLinux, puede aparecer un mensaje de error que dice que System.Devices no es compatible con esta plataforma.

Error message.png

Esto sucede porque las rutas de la biblioteca no están configuradas correctamente y, en lugar de compilarse con el archivo DCU adecuado, el compilador busca la versión original del archivo de código fuente, que no es compatible.

Delphi Linux soporta RedHat Enterprise y las distribuciones Ubuntu que se muestran en la siguiente imagen:

Y bien, ya que hemos terminado de configurar nuestro ambiente Linux Desktop.

Agregamos un botón a la forma de nuestro proyecto y el código respectivo para mostrar el ya famosísimo «Hola Mundo».

Compilamos y ejecutamos y como se esperaba ya podemos ver nuestra aplicación Delphi corriendo en Linux.

Así de fácil y rápido.

Como pueden ver, el funcionamiento es el mismo que ya conocemos para crear aplicaciones multiplataforma así que no tendrán problema para desarrollar aplicaciones Linux.

Además ya existe mucho material en la nube acerca de éste complemento FMXLinux.

FMXLinux
Running the Platform Assistant on Linux
Supported Target Platforms
Preguntas frecuentes FMXLinux

Solo me resta invitarlos a experimentar y desarrollar aplicaciones multiplataforma con nuestra herramienta de desarrollo consentida Delphi.

Nos leemos en la próxima.

Deleaker y Delphi Rio Community Edition

Hola amigos,

El día de hoy les voy a platicar acerca de una herramienta creada por Artem Razin en 2006 la cual fue creada para Visual Studio pero en su última versión Deleaker 2019.2 han incorporado a RAD Studio lo que nos permitirá encontrar fugas de memoria desde Delphi y/o C++Builder

El anuncio de ésta versión lo podemos ver en el siguiente video.

Si lo deseas puede descargar Deleaker desde el siguiente enlace:

Descargar Deleaker

Deleaker cuenta con las siguientes funcionalidades:

• Encuentra cualquier fuga: memoria, GDI, identificadores y otros 
• Perfiles no administrados y código .Net
• Admite aplicaciones de 32 y 64 bits
• Informes enriquecidos
• Exportación de resultados a XML

Yo ya he descargado e instalado la versión de prueba en mi flamante Delphi 10.3 Rio Community Edition :).

El proceso de instalación es muy simple y rápido, nos permite seleccionar cómo queremos instalar Deleaker, como una aplicación independiente o integrada al IDE de nuestra herramienta de desarrollo.

Durante la instalación podemos ver los Delphi que hemos seleccionado y donde se integrará para ser utilizado dentro de nuestro IDE.

Una vez que iniciamos nuestro Delphi y queremos ejecutar Deleaker es necesario ingresar la licencia que nos llegó al correo electrónico que registramos para la descarga del producto. 

Guardamos la licencia y ya está listo para funcionar por 14 días. Para adquirir éste producto puedes dar clic en el siguiente enlace:

Compra Ahora

Una vez que iniciamos Deleaker en nuestro IDE nos preguntará que «Profile» queremos utilizar.

Para efectos de mis primeras pruebas con Deleaker hice una pequeñisima aplicación dejando una posible fuga de memoria, la cual fué detectada por Deleaker sin mayor problema.

he dejado intencionalmente un TStrings sin liberar, ejecuté Deleaker y al terminar el programa me mostró los siguientes mensajes:

Se corregió el error liberando el objeto:

Ejecuté nuevamente Deleaker y se obtuvo el resultado esperado

Por lo pronto me ha dejado una muy buena impresión y estaré buscando más fugas de memoria durante el periodo de pruebas las cuales iré subiendo en las próximas entradas.

Nos vemos en la próxima entrada.

Delphi 10.3.1 Rio CE en acción.

Como el título lo dice veremos a nuestro Delphi 10.3.1 Rio Community Edition en acción y para ello he tomado una aplicación que ha sobrevivido al tiempo desde aquel lejano Delphi4 pásando por el famosísimo Turbo Delphi Professional, despúés por Delphi XE2, y ahora con la Edición Community .

Una de las características que más me gustan de mi Delphi es su compatibilidad hacia atrás y eso lo he comprobado de nuevo al compilar mis programas ya que solo he tenido que cambiar una variable de tipo Char a AnsiChar, todo lo demás incluyendo los componentes AsyncPro no han tenido problema alguno para compilar y correr.

(AsynPro se puede instalar desde el administrador de Descargas GetIt incluido en ésta Edición)

El proyecto utilizado para ésta demostración es una aplicación de Control de Llamadas Telefónicas que se conecta a una central por medio de Puerto Serial o a través de Puertos TCP y una aplicación que gestionará la información recibida de la Central telefónica, realizar el mantenimiento de la base de datos y la obtención de listados y estadísticas relativas a dicha información.

La primera versión se conectaba a tablas Paradox con los desaparecidos componentes BDE y actualmente se conecta a una base de datos Firebird a través de los componentes IBX.

La comunicación con la central telefónica se hacía en versiones anteriores a través de la lectura de puerto serial y para ésta versión se realizará a través de puertos TCP utilizando los mismos componentes AsyncPro para la VCL.

Para el menú del sistema se ha tenido que eliminar los reportes ya que fueron creados con Rave Report y para ésta versión hemos decidido utilizar FastReport VCL que es la que se puede instalar «nativamente», si, un poco de trabajo pero que al final sabemos que redituará en una mejora en el sistema.

(Fast Report VCL se puede instalar desde el administrador de Descargas GetIt incluido en ésta Edición)

Despúés de compilar se han obtenido los ejecutables que forman a ésta aplicación.

Y ya podemos verlos en acción. 🙂

Nos vemos en la Próxima