2- Integración continua con Delphi (Jenkins)-Instalación

viernes, 8 de noviembre de 2019 Sin comentarios
Share Button

imageEn la anterior entrada empezamos con el tema de Integración continua. Vimos cómo crear y trabajar por encima con repositorios GIT.

A continuación os adjunto los links a las otras entradas de esta serie (las anteriores y las previstas):

1- Integración continua con Delphi (GIT)
2- Integración continua con Delphi (Jenkins) – Instalación
3- Integración continua con Delphi (Jenkins) – Primer proyecto
4- Integración continua con Delphi (DUnitX)

Una vez visto el paso previo de GIT, lo siguiente que necesitamos  en “montar” nuestro servidor de automatización. Para ello he escogido Jenkins. Jenkins en un “Servidor de Automatización” Open Source escrito en java y que está basado en Hudson.

Admite herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como secuencias de comandos de consola y programas por lotes de Windows.

A continuación vamos a ver los pasos necesarios para instalar y configurar Jenkins.

INSTALACIÓN DE JENKINS

Una vez descargado el paquete correspondiente a nuestro sistema, comenzamos la instalación. Actualmente está disponible la versión v2.202, pero la verdad es que tanto las actualizaciones del sistema, como la de los múltiples plugins que posee son muy frecuentes.

image

Captura_2019-10-31 08_54_05

Jenkins se instala como un servicio de Windows y la instalación no tiene más opciones que el directorio de destino, que podemos dejar el que propone por defecto. El acceso se realiza a través de un navegador web y utiliza por defecto el puerto 8080.

Una vez finalizada la instalación podemos comprobar que la consola de Servicios de Windows que se ha instalado correctamente y que está “Iniciado”. Se abrirá una ventana del navegador a la dirección:   http://localhost:8080/

Lo primero que se nos solicita es un “Password de Inicialización”. Simplemente hemos de buscarlo en la ruta donde se nos indica y pegarlo en el espacio habilitado en la pantalla.

image

Lo siguiente que hace es instalar los plugins que la instalación propone por defecto y las dependencias que necesitan para funcionar. Posteriormente desde la configuración podemos instalar más según nuestras necesidades.

Entre los que se instalan por defecto podemos ver que está el de GIT y SVN; El de SSH y la extensión para poder enviar Mails. También los relacionados con pipelines.

image

Una vez completado este paso, nos pedirá definir el usuario Administrador:

image

Por último Jenkins nos pide que cambiemos la URL de localhost por la IP.

Una vez completada la configuración, podremos hacer “login” como administradores (con el usuario definido anteriormente) para poder acceder al “Panel de Control” de Jenkins, donde veremos una imagen como esta:

image

CONFIGURACION BÁSICA DE JENKINS

Lo siguiente es configurar lo mínimo para que Jenkins pueda automatizar un proyecto.

CUENTA DE INICIO

Este es un paso muy importante si queremos que posteriormente Jenkins compile correctamente los proyectos de Delphi, ya sea mediante línea de comandos o mediante el plugin de RAD Studio.  Por defecto, Jenkins instala el servicio para iniciarlo desde la “Cuenta local del Sistema”. Necesitamos cambiar esa cuenta a la de nuestro “usuario local”. Si no lo hacemos así, es posible que luego el compilador tenga problemas para encontrar las librerías que necesita.

Para ello, accedemos a la consola de administración de Servicios y seleccionamos las propiedades del servicio de Jenkins. En la pestaña de “Iniciar sesión” es necesario modificar la cuenta de inicio.

image

Debemos desactivar la «Cuenta del sistema» y colocar la del usuario con la que hemos iniciado la sesión. Tendremos que rellenar usuario y contraseña y una vez guardados los cambios reiniciar el servicio (desde la propia consola –Acción/Reiniciar-).

image

CONFIGURAR GIT

En la entrada anterior vimos cómo instalar y realizar tareas con GIT. Si estamos instalando el Servidor de Jenkins en una máquina diferente, también deberemos instalarlo aquí. En este caso sin necesidad de herramientas gráficas (TortoiseGIT/GITExtensions) ya que Jenkins no las necesita.

Accedemos a “Administrar Jenkins”/”Global Tool Configuration”. En la sección de GIT necesitamos configurar el path de acceso al ejecutable.

image

INSTALAR EL PLUGIN DE RAD STUDIO

A la hora de compilar nuestros proyectos, hay diferentes alternativas. Podemos utilizar directamente la herramienta de MSBuild, también ficheros .BAT donde llamemos al compilador con los parámetros necesarios o utilizar el plugin existente para RAD Studio.

Este plugin para Jenkins nos permite configurar el path de RAD Studio (o diferentes versiones que tengamos instaladas), de forma que también se pueden compilar los proyectos desde él.

Basta con instalar el plugin de RAD Studio desde la sección de “Administrar Plugins”.

image

Y configurarlo desde “Administrar Jenkins”/”Global Tool Configuration”. Como he dicho podemos configurar varias versiones de RAD Studio si deseamos compilar proyectos de diferentes versiones y luego utilizar en cada proyecto la que corresponda.

image

CONFIGURACIÓN PARA ENVÍO DE CORREOS

Lo siguiente que podemos configurar es el envío de correo, para obtener información por correo de las diferentes tareas y su resultado que se realizan en el servidor. Se puede hacer desde: “Administrar Jenkins”/”Configurar el sistema”.

Las configuraciones varían según el servidor a utilizar. Por ejemplo, una configuración para utilizar cuentas de GMail sería la siguiente (habilitando el uso de aplicaciones externas en la cuenta de GMail):

image

En la parte inferior aparece un botón para generar un mail de prueba. Si la prueba es satisfactoria, aparecerá el texto que hay en el recuadro y en la cuenta de Mail configurada, recibiréis un correo de prueba. Si queremos configurar otro servidor de correo, bastará modificar los parámetros de conexión (usuario, puerto, SSL,…).

Hasta aquí esta segunda entrada. Si necesitemos configurar alguna cosa más, lo haremos sobre la marcha, pero los elementos más importantes son los que hemos visto aquí.

Como siempre los comentarios, sugerencias y criticas “constructivas” son bienvenidas.

Hasta la próxima!!

Share Button
Categories: CI, Delphi, GIT, Jenkins, TDD Tags: , , , ,

1- Integración continua con Delphi (GIT)

lunes, 4 de noviembre de 2019 3 comentarios
Share Button

Voy a dedicar varias entradas a hablar de Integración Continua con Delphi (a partir de ahora escribiré en algunos sitios CI –Continuous Integration– para abreviar).

Para no extenderme mucho voy a intentar dividir esta entrada en tres/cuatro entregas. Cada una de ellas centrada en un “pieza” importante de las que vamos repasar. Esta es la idea inicial, pero es posible que a medida que vaya desarrollando las otras, la cosa pueda cambiar.

1- Integración continua con Delphi (GIT)
2- Integración continua con Delphi (Jenkins) – Instalación
3- Integración continua con Delphi (Jenkins) – Primer proyecto
4- Integración continua con Delphi (DUnitX)

image

Una definición de Integración Continua (que puede ser un término muy amplio) podría ser esta:

La integración continua es una práctica de desarrollo de software mediante la cual los desarrolladores combinan los cambios en el código en un repositorio central de forma periódica, tras lo cual se ejecutan pruebas y se generan versiones automáticas.

Es algo así como ir encadenando los diferentes pasos que habitualmente hacemos (o deberíamos hacer manualmente) de una forma automatizada.

 

VENTAJAS DE LA CI

¿Porqué utilizar Integración continua?

Utilizar esta metodología, como muchas otras, a priori puede generar una sensación de pérdida de tiempo y un trabajo extra, pero a la larga la automatización de tareas suele traer ventajas que al principio pueden no ser evidentes, pero que pasado un tiempo se hacen visibles.

¿Qué nos puede aportar introducir esta metodología en nuestros desarrollos?

  • Obtenemos mejoras en el rendimiento a la hora de desarrollar aplicaciones. Se dedica menos tiempo a tareas manuales y repetitivas. Se evita que con el tiempo se dejen de hacer cosas como las pruebas automáticas, ya que no hay que hacerlas manualmente.
  • Minimiza los errores. Al automatizar tareas, éstas se pueden realizar con más frecuencia. Además, si aparecen errores se detectan con más rapidez y permite corregirlos más rápido.
  • Se generan actualizaciones de nuestro software (builds, compilaciones, releases,…) con mayor rapidez y frecuencia. Se pueden realizar entregas (si son necesarias) de forma más continuada.
  • Documentación e historial de las versiones generadas, resultados de los tests, cambios,…
  • Concede al desarrollo una mayor seguridad y confiabilidad, y eso repercute en la confianza del equipo de trabajo.

COMPONENTES PARA CI

Para completar el proceso de Integración Continua vamos a explicar las siguientes piezas con las que vamos a trabajar.

image

  • Sistema de control de versiones (en nuestro caso GIT –github-)
  • Test Unitarios  (en nuestro caso con DUnitX)
  • Compilaciones y pruebas automatizadas (Utilizaremos Jenkins)

SISTEMA DE CONTROL DE VERSIONES (GIT)

Ya he hablado otras veces del Control de Versiones en el blog.
Hoy en día lo considero imprescindible para un programador, independientemente de que trabaje de forma individual o en equipo. En realidad para un equipo es imprescindible, pero a nivel individual también nos aporta muchas ventajas. Seguridad, historial de cambios, metodología de trabajo,…
Hay diferentes Sistemas de Control de Versiones. Posiblemente los que más utilizamos son SVN y GIT. Aunque las arquitecturas y la forma de trabajo tienen algunas diferencias, la base es la misma.image

Para este artículo utilizaré GIT, pero los pasos son muy similares si trabajáis con otro.

Para ilustrar el artículo voy a explicar los pasos básicos para crear una cuenta en github,  crear un repositorio y subir allí nuestro proyecto.

Utilizaremos https://github.com/gitbucket/gitbucket

Podemos crear una cuenta con el «Plan Individual», suficiente para realizar las pruebas.
Seleccionaremos nuestra experiencia en programación (¿?¿?¿? no tengo muy claro para qué nos solicitan esta información –aunque no es obligatoria-).

image

Y «Host a project (repository)» como uso que le vamos a dar al repositorio.

image

Después de validar la cuenta a través del email, podremos crear un nuevo Repositorio (almacén de datos).

  • Inicializaremos con un fichero de Readme (plantilla)
  • Seleccionaremos si queremos un repositorio Privado/Público. Independiente para nuestras pruebas (yo personalmente lo he creado como privado).
  • “Add .gitIgnore”, nos permite seleccionar un fichero de “ignore” con la plantilla para Delphi. Significa que ya van configurados los ficheros que GIT debe ignorar para subir al repositorio. Por ejemplo, los ficheros:  .exe, .dll, .dcu, .map, .tds, etc, etc, etc,…
  • Seleccionaremos también una licencia de las disponibles.

Y ya podemos crear el repositorio.

image

Accedemos a la pantalla del Repositorio. En la sección de <Code> tenemos un fichero .gitignore, la licencia y el fichero Readme, acordes a lo que seleccionamos al crear el repositorio.
Si desplegamos el botón de [Clone or Download] tendremos la URL del repositorio. En mi caso es la siguiente:
https://github.com/NeftaliBlog/Ejemplos.git

CLIENTES GIT PARA WINDOWS

Hay herramientas para Windows que facilitan el trabajo con GIT (también para SNV) y también hay quien prefiere trabajar desde la línea de comandos; Eso ya va a gusto de cada uno.
Yo trabajo habitualmente con dos; GitExtensions y TortoiseGIT. Os dejo un par de imágenes de los menús de trabajo y los links para descargarlas.

Básicamente son herramientas que nos ofrecen un entorno visual para todas las opciones que posee GIT. Al final casi todas ellas acaban mostrándonos al realizar una operación, el comando de GIT correspondiente a la acción.

GITExtensionshttps://github.com/gitextensions/gitextensions

image

TortoiseGIT –  https://tortoisegit.org/

image

Lo primero que tenemos que hacer es Clonar nuestro repositorio de Github en nuestra máquina local. De esta forma podremos comenzar a gestionar proyectos. Para ello podemos utilizar la opción de Clonar (Git Clone) de las herramientas comentadas anteriormente.

Una vez clonado, añadimos nuestro proyecto dentro del repositorio y realizamos un Add. Con esto conseguiremos añadir los ficheros

Si utilizamos GitExtensions (a la que corresponde esta pantalla de clone)

image

Si lo hacemos con TortoiseGIT será la que veis a continuación:

image

Si el proceso se ha completado con éxito, nos aparecerá una ventana similar a esta (GITExtensions) y tendremos en local una copia exacta a nuestro repositorio de GitHub.

image

Y si revisamos el contenido del directorio, debería aparecer algo como lo que se ve a continuación. Ahora ya tenemos “un Clon” (una copia) de nuestro repositorio de github en local.

Repositorio github:   https://github.com/NeftaliBlog/Ejemplos

Repositorio en LocalD:\PROYECTOS\Ejemplos Blog

(En mi caso yo lo he colocado aquí, vosotros tendréis otro directorio local a vuestro gusto)

image

AÑADIR PROYECTO AL REPOSITORIO

Lo siguiente que vamos a hacer es crear un nuevo proyecto y añadirlo a nuestro repositorio. Para esto, he creado un proyecto de “hola mundo” (dentro de nuestro repositorio local).  Además he añadido una unit con las 4 funciones matemáticas básicas (suma resta, multiplicación y división), que luego nos servirá para diseñar test Tests Unitarios con DUnitX sobre estas funciones.

Realizaremos los pasos para añadirlo. No es la finalidad de este artículo repasar en profundidad el uso de GIT, así que no voy a entrar en más detalles. Los pasos a realizar son: ADD, COMMIT y PUSH.

Con esto conseguiremos subir nuestro proyecto desde nuestro repositorio local al de github.

image

Llegados a este punto, ya tenemos un repositorio local y nuestro repositorio de github sincronizados. Si a partir de ahora otro miembro del equipo quiere incorporarse al mismo proyecto bastaría con replicar los pasos en su equipo para “Clonar” el repositorio en su máquina. Cada uno trabaja en su repositorio local hasta que necesita integrar cambios en el repositorio de GIT.

A difencia de otras veces, no adjunto los ficheros del proyecto ya que podéis descargarlos directamente del repositorio de github.

BIBLIOGRAFÍA Y LINKS RELACIONADOS

Si queréis revisar más documentación sobre el tema, a continuación os dejo algunos links…

https://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/
https://aws.amazon.com/es/devops/continuous-integration/
https://www.youtube.com/watch?v=dhKGmp6KsNs
https://chapmanworld.com/2015/01/18/use-radstudio-with-jenkins-no-plugin/
http://thundaxsoftware.blogspot.com/2011/07/continuous-integration-for-your-delphi.html
https://christerblog.wordpress.com/2010/04/25/using-hudson-to-build-delphi-projects/
http://www.nickhodges.com/post/Getting-Hudson-set-up-to-compile-Delphi-Projects.aspx

Como siempre los comentarios, sugerencias y criticas “constructivas” son bienvenidas.

Hasta la próxima!!

Share Button
Categories: CI, Delphi, GIT, Jenkins, TDD Tags: , , , ,

FMX Linux – Primeros proyectos

lunes, 15 de julio de 2019 4 comentarios
Share Button

Hace poco publiqué una primera entrada introductoria sobre FMX Linux. En ella explicaba los primeros pasos para su instalación y configuración. En mi caso lo hice utilizando un sistema Ubuntu 18.04 desktop.

FMX Linux – Configuración

Captura_2019-07-10 13_37_51

Para las pruebas estoy utilizando una máquina virtual preconfigurada sobre VirtualBox. Es una buena solución, además de práctica y rápida de comenzar con un sistema ya configurado y listo para funcionar. De esta forma me puedo centrar en lo que realmente importa para estas entradas.

Captura_2019-07-10 10_46_56Para esto he utilizado la web descargarmaquinasvirtuales.com que permite descargar (como su nombre indica) máquinas de diferentes sistemas ya configuradas (tanto para VirtualBox como para VMWare), de forma que podemos tenerlas en marcha y funcionando en unos minutos.

Una vez instalado y funcionando, la idea es ir ejecutando diferentes proyectos realizados en Delphi para ver cómo se desempeñan en Linux. Son proyectos que desde que apareció Firemonkey he ido desarrollando, algunos para entradas del blog, otros de ejemplo y otros como parte de aplicaciones más grandes, un poco de todo.

La primera prueba ya la comenté en la entrada anterior, y se trata del programa “Hola Mundo!”. En este caso funciona sin problemas (como era de esperar). También comenté que con este programa realicé un Debug paso a paso básico.

Forms y animaciones

La siguiente prueba, también bastante sencilla ha sido probar con varios formularios. Abrir, cerrar y liberarlos sin problemas. Además en el primero de ellos he añadido al color de fondo una animación.

Podéis ver que el color de fondo utiliza un gradiente y una animación en loop.

El botón de cerrar también tiene un efecto de blur aplicado.

Continuar leyendo…

Share Button

FMX Linux – Configuración

miércoles, 10 de julio de 2019 5 comentarios
Share Button

Captura_2019-07-08 13_10_51Seguro que los que estáis un poco al tanto de las noticias de Delphi, el titular de este artículo no os sorprenderá. Se ha publicado en los foros y grupos relacionados con Delphi. Ya tenemos una herramienta que nos permite añadir a la lista de plataformas de desarrollo para Delphi, algunas versiones de Linux (FMX Linux). Está disponible en la versión Architect y Enterprise de Delphi, y para el resto vía GetIt! se puede descargar en modo demo.

El paquete propone generar aplicaciones en FireMonkey con Delphi y utilizando FMX Linux, estas estarán disponibles en Linux (utilizando para ello en compilador para Linux de Embarcadero).

No tengo grandes conocimientos de Linux/Unix, así que me he propuesto para esta entrada intentar poner en marcha el paquete y conseguir generar un ejecutable en Linux con la documentación de la wiki de Embarcadero a ver si soy capaz. De esta forma evaluar también la dificultad de hacerlo para alguien con pocos conocimientos como yo.

Primer Paso: Instalación vía GetIt!

Es la forma más sencilla de hacerlo, ya que el trabajo para nosotros es nulo. Seleccionamos el paquete en GetIt y pulsamos Install. El asistente se encargará una vez aceptada la licencia, de instalarlo, registrarlo y reiniciar el IDE para completar los últimos pasos.

Continuar leyendo…

Share Button
Categories: Delphi, FMXLinux, Linux Tags: ,

Eventos con SQL Server y FireDAC (Query Notifications)

jueves, 4 de julio de 2019 6 comentarios
Share Button

QueryNotificationsLa mayoría de SGBD’s disponen de un sistema para poder utilizar a lo que habitualmente llamamos eventos o notificaciones, lo que ya no es tan habitual, es que los componentes de acceso implementen esta funcionalidad.

En este artículo me voy a centrar en el sistema que nos ofrece SQL Server (las “Query Notifications”) + FireDAC (TFDEventAlerter).

¿QUE SON LAS “QUERY NOTIFICATIONS”?

Resumiendo y simplificando el concepto, podemos decir que una aplicación cliente recibe una notificación desde el Gestor de Base de Datos, cuando el contenido de una consulta que definimos, cambia. En la práctica funcionaría de la siguiente manera.

Las “query notifications” nos permiten definir la siguiente consulta:

SELECT NOMBRE, APELLIDOS FROM CLIENTES

Y recibir una notificación cuando los datos involucrados en ese consulta (NOMBRE o APELLIDOS del cliente) cambian.

Con esta configuración recibiré una notificación siempre que se AÑADA o BORRE un registro de la tabla CLIENTES y también cuando se modifiquen los campos NOMBRE y APELLIDOS de esta tabla (no así el resto de campos de la tabla).

NOTIFICACIONES EN SQL SERVER

Las notificaciones en SQL Server se introducen en a partir de la versión 2005 (9.x). Y existen varias formas de implementar las notificaciones:

  • SQLNotificationRequest: Está programado a un nivel más bajo y es en cierta forma menos automático, ya que el usuario debe implementar parte de la estructura necesaria para hacerlas funcionar.
  • SQLDependency: Su implementación es a nivel más alto y el sistema es más automatizado. Se inicia un proceso que procesa las notificaciones que se publican en una cola.
  • SQLCacheDependency: Que se utiliza para aplicaciones Web diseñadas mediante ASP.NET 2.0 o posterior.

En nuestro caso nos vamos a centrar en SqlDependency que es el método que utiliza el componente TFDEventAlerter de las FireDAC.

Continuar leyendo…

Share Button

Librería de componentes GLibWMI (actualización)

miércoles, 3 de abril de 2019 2 comentarios
Share Button

Estos días he dedicado un poco de tiempo a revisar esta librería de componentes GLibWMI para trabajar con WMI que ya hace unos años diseñé. Ya he comentado otras veces que por el tipo de código que contiene (en su día la diseñé con Delphi 6) debe compilar sin mayores problemas en versiones posteriores, salvo algunos Warnings (por conversión de tipos de datos) y algún Hint, que no afectan al funcionamiento de los componentes.

He compilado el paquete de componentes con la versión 10.2 Tokyo y he icluído algunas directivas de compilación.

Captura_2019-04-03 11_48_36   Captura_2019-04-03 11_50_24

La librería se ha actualizado a la versión 2.2b y he recompilado los ejemplos y demos que la acompañan.

He mantenido las descargas anteriores por si alguien necesita descargarlas.

Aquí tenéis el acceso a la sección donde se detallan los cambios.

Captura_2019-04-03 12_01_14

Share Button

CodeRage en Español 2019 (21 y 22 de Febrero)

martes, 12 de febrero de 2019 2 comentarios
Share Button

Como cada año por estas fechas, ya está todo preparado para un nuevo CodeRage en Español.

Dos jornadas con conferencias online para desarrolladores sobre Delphi y C++Builder. Novedades, planes de futuro, funcionalidades recientes, y características interesantes para la comunidad de desarrolladores.

(Actualización 06/03/2019)
Si no pudiste asistir a los Webminar, puedes acceder a la grabación de todas las conferencias en el canal de YouTube de Embarcadero Latinoamérica.

Aquí tienes los videos de todas las conferencias

Banner_facebook_CodeRage2019ES

Personalmente creo que es una gran oportunidad para ver algunos temas de los que habitualmente no se habla en los foros, blogs,…

Aquí tenéis un acceso al link a la página de registro.

A continuación os adjunto un listado de las presentaciones, con hora española (en la pñágina de registro tenéis opción de cambiar la gfranja horaria, para obtenerlas en cualquier otra)..

21 de Febrero:

  • 09:00 – Arquitectura multi-tenant con Spring Boot y Delphi CE (Daniel A. S. Verduzco)
  • 09:50 – Creando aplicaciones Web con Delphi y Unigui (Emilio Pérez)
  • 10:40 – FIREDAC: Recursos que no conoce (Jose Castillo Reyes)
  • 11:30 – RADServer, el centro de todo (Jhonny A. S. Gutierrez)
  • 12:20 – Cómo utilizar módulos de datos para simplificar el desarrollo de aplicaciones multi-plataforma (Miguel A. M. Rendón)

22 de Febrero:

  • 09:00 – El Poder de C++Builder 10.3 Rio (Luis Felipe González)
  • 09:50 – Migración de proyectos C++ Builder a Unicode (Luis Felipe González)
  • 10:40 – Caso de Estudio: Aplicación Móvil Mascotas (Edgar Ramírez Rosas)
  • 11:30 – Aprovechando todo en 10.3 Architect Edition (Fernando Rizzato)
  • 12:20 – Un vistazo introductorio a DevOps (Alejandro Ruiz)
  • 13:10 – Crear una aplicación con ExtJS Modern (Joshua Hernandez)
Share Button
Categories: Delphi Tags:

(Lo que viene…) Variables Inline

viernes, 2 de noviembre de 2018 7 comentarios
Share Button

Se van descubriendo algunas de las características que tendrá la próxima versión de RAD Studio; Sobre una de ellas voy a hablar hoy y a medida que vayan saliendo comentaré algunas más a medida que las pueda ir probando en la beta. En la versión 10.3 de Delphi se introduce la característica de poder definir variables y constantes «inline».

INTRODUCCIÓN

Utilizando la definición Inline de variables y constantes podemos definir una variable, asignarle un tipo e inicializarla, todo ello en una misma línea y además en el punto donde la necesitemos. Ahora podemos utilizar un código como este que en versiones anteriores nos hubiera dado errores en compilación.

begin
  var str               := 'Hola mundo!';
  var i:integer         := 10;
  var numVersion:double := 10.3;
  var dFecha:TDateTime  := Now;
  var b:boolean         := True;
 
  ShowMessage ('Variable string:    ' + str + sLineBreak +
               'Variable integer:   ' + IntToStr(i) + sLineBreak +
               'Variable double:    ' + FloatToStr(numVersion) + sLineBreak +
               'Variable Date:      ' + DateToStr(dFecha) + sLineBreak +
               'Variable boolean:   ' + BoolToStr(b, True) + sLineBreak
               );

También podemos hacer algo similar con las constantes. De forma que podemos escribir un código como este:

procedure TForm2.Button3Click(Sender: TObject);
begin
  const iVersion:integer = 10;
  const sMensaje:string = 'Hola mundo!';
   ShowMessage(sMensaje + sLineBreak + 'Versión: ' + IntToStr(iVersion));
end;

Continuar leyendo…

Share Button
Categories: beta, Delphi Tags:

Delphi Community Edition

jueves, 19 de julio de 2018 2 comentarios
Share Button

La comunidad Delphi llevaba tiempo demandando esta versión de Delphi y finalmente Embarcadero se ha decidido a dar ese paso. Hace tiempo que disfrutábamos de la versión Starter, pero con la “Delphi and C++Builder Community Edition” se da un paso más.

Se podrá disfrutar de una versión completa, con desarrollo multiplataforma (Windows, Android, iOS y macOS), acceso a Bases de Datos, IoT y el resto de características necesarias para desarrollar con una versión completa.

Delphi_10.2.3_CE_Splash

Según la web de embarcadero, esta versión está enfocada a desarrolladores independientes, startups, estudiantes y organizaciones sin fines de lucro con ingresos anuales menores a 5000$ o equipos con hasta 5 desarrolladores.  Es decir, que podemos instalar y utilizar esta versión para aplicaciones de uso propio o incluso para venderlas si nuestros ingresos por ellas no superan esos 5000$.

Personalmente creo que es una gran noticia; La única pega tal vez sea que ha llegado un poco tarde, pero eso no quita que sea algo bueno.  Disponemos de una versión Profesional completa de libre descarga y uso para todos aquellos que quieran trabajar con ella y conocerla.

Aquí tenéis la comparativa entre las diferentes versiones (incluida la Community) que distribuye ahora Embarcadero.

2018-07-19 08_15_32-000184

Si queréis conocer todos los detalles de esta versión, aquí tenéis en enlace a la página Community Edition FAQs, donde tenéis todos los detalles comerciales, de licencia, de uso,… referentes a esta versión.

Página de presentación y descarga.

Aquí os dejo también a la página en la docWiki de Embarcadero. Podéis encontrar aquí detalles más técnicos sobre la descarga, instalación, activación,…

Y algunos enlaces a Blogs y Webs de compañeros de la comunidad:

NOTA: Añado también algunos enlaces a páginas de Embarcadero con datos de la versión.

Share Button
Categories: CE, Delphi, Embarcadero Tags: ,

Entornos de ejecución de test con DUnitX (Bonus track)

martes, 26 de junio de 2018 Sin comentarios
Share Button

Con la anterior entrada del blog completamos la serie sobre test unitarios y los frameworks a utilizar con Delphi, con una visión general sobre DUnitX. A continuación tenéis los links a las entradas de la serie.

Esta última no estaba prevista inicialmente, pero la última ya era bastante extensa y no quise mezclar con el tema de DUnitX este “Bonus track”. Digamos que esta es como un apéndice a la serie.

DUnitX permite ejecutar los test que diseñamos utilizando diferentes salidas. Digamos que el programa de ejecución de test puede estar diseñado en “modo consola”, utilizando un ejecutable VCL o generando un programa FMX. No hablamos de los test en sí, sino del programa que nos muestra la salida y los resultados de la ejecución.

A continuación vamos a repasar casda uno de ellos.

Continuar leyendo…

Share Button
Categories: Delphi, TDD, Unit test Tags: , ,