Archivo

Archivo para la categoría ‘VCL’

KAI: Inteligencia artificial integrada en el IDE de Delphi

miércoles, 23 de septiembre de 2026 1 comentario
Share Button

La idea de esta entrada (y las siguientes) es evaluar KAI para Delphi, Qué es, cómo se instala y configura, cómo funciona su integración con el IDE, problemas que encuentro,…

Introducción

Embarcadero ha presentado recientemente Kai, un nuevo plugin para RAD Studio, que incorpora capacidades de inteligencia artificial directamente en el entorno de desarrollo. Su objetivo no es limitarse a completar líneas de código, sino convertirse en un asistente capaz de participar en distintas fases del desarrollo: desde la creación de una interfaz hasta la compilación, depuración, refactorización y modernización de una aplicación.

Kai funciona como un agente integrado en el IDE. El desarrollador puede describir en lenguaje natural lo que necesita y pedirle, por ejemplo, que genere una nueva funcionalidad, cree una pantalla VCL o FireMonkey, analice varios ficheros del proyecto, explique un fragmento de código o ayude a corregir errores de compilación. También puede utilizarse para trabajar progresivamente sobre una aplicación existente, algo especialmente interesante en proyectos Delphi antiguos que necesitan actualizar su interfaz o incorporar nuevas características.

Una de sus principales ventajas es que no depende de un único proveedor de inteligencia artificial. Kai utiliza un modelo BYOK —Bring Your Own Key—, que permite configurar las credenciales y servicios elegidos por el desarrollador. Entre las opciones compatibles se encuentran GitHub Copilot, OpenAI, Claude, Gemini y modelos locales, según la configuración y versión utilizada. De este modo, es posible escoger el modelo más adecuado según la tarea, el coste, el rendimiento o los requisitos de privacidad.

Además del chat del agente, Kai ofrece sugerencias de código integradas en CodeInsight, autocompletado en línea y un panel desde el que comparar distintas propuestas. El agente también puede interactuar con el proyecto y automatizar tareas mediante integraciones basadas en MCP, lo que amplía su utilidad más allá de una conversación aislada.

En definitiva, Kai pretende transformar RAD Studio en un entorno de desarrollo más asistido y productivo, manteniendo al programador al mando. No sustituye el conocimiento de Delphi, pero puede reducir el tiempo dedicado a tareas repetitivas y facilitar tanto la creación de nuevas aplicaciones como la evolución de proyectos existentes.

Instalación de KAI

La instalación de KAI se puede hacer directamente desde GetIt!. Se descargará la última versión existente compatible con la versión del IDE directamente y se instalará.
Si queremos probar alguna de las otras versiones, los links a todas las versiones están a continuación:

  • 1.0: https://altd.embarcadero.com/getit/installer/components/KAI/KAI-370-1.0.0.zip
  • 1.0.2: https://altd.embarcadero.com/getit/installer/components/KAI/KAI-370-1.0.2.zip
  • 1.1: https://altd.embarcadero.com/getit/installer/components/KAI/KAI-370-1.1.0_02.zip

¿Porqué he puesto estos links?

Porque las primeras pruebas que yo he realizado las he hecho con la versión 1.0. Con las versiones posteriores he tenido algunos problemas en la configuración de los servicios de Github Copilot, así que mientras resuelvo esos temas, he decidido empezar a probar con la versión inicial. En las siguientes entradas actualizaré la versión y comentaré cómo ha ido el proceso.

Podéis encontrar más información sobre la instalación de KAI en la documentación de Embarcadero (link).

Puesta en marcha…

Una vez instalado este plugin, hay que configurar el servicio de IA que queramos utilizar. Vuelvo a comentar que KAI no es más que una integración en el IDE de Delphi de diferentes servicios de IA, no es un agente de IA en si mismo. En concreto, y según la documentación, KAI proporciona acceso a más de 40 agentes de IA, incluidas opciones conocidas como GitHub Copilot, OpenAI, Anthropic Claude, Google Gemini CLI, y agentes adicionales como Antigravity, Grok, Mistral, Cursor, Devin, Kilo Code y Junie.

El licenciamiento de KAI se gestiona igual que la licencia del propio RAD Studio y funciona como un producto separado. Desde el «License Manager» de RAD Studio veremos el estado de nuestra licencia, podremos añadirla, actualizarla,… Podéis disponer de una licencia de prueba (al igual que el resto de productos de embarcadero para evaluarlo). Los pasos para solicitarla los tenéis aquí (link a la web de Embarcadero).

Una vez tengamos licenciado KAI, debemos configurarlo en el IDE.

Configuración de KAI

Las configuraciones de KAI se acceden desde el IDE en: Tool/Options…/KAI.
Ahí podemos acceder a la configuración de «Code Completion» y la del «Chat», que son de las que vamos a hablar inicialmente.

Para el «Code completion» usando IA, tenemos 2 opciones:

  • Ghost Text: que mostrará en texto sugerido a continuación del actual (en cursiva)
  • CodeInsight Symbol: Mostrará el texto sugerido en la parte superior de la lista de sugerencias (marcado como Kai)

Os adjunto 2 imágenes donde se ve la diferencia de la visualización:

 

 

 

 

 

 

 

.

La primera de las imágenes es la visualización como «Ghost Text» y la segunda dentro del Codeinsight.

La segunda configuración es la referente al Chat, con la que interactuaremos con el Agente de IA configurado.

Primeras impresiones

Para empezar vamos aprobar con algo sencillo. Generar un programa «Hola mundo!», compilarlo y ejecútalo.

Utilizo el siguiente prompt:
«En esta carpeta de disco:
«c:\ProyectosDelphi\Proyectos KAI\HolaMundov1»
Genérame un proyecto de VCL con un único botón que al pulsarlo muestre un mensaje de «Hola mundo!»
Compílalo y ejecútalo desde el IDE de Delphi.»

KAI nos pide permisos para acceder a los directorios de disco.

Una vez finalizado el proceso nos ha generado el proyecto, lo ha grabado en disco, lo compila y lo ejecuta sin problemas en apenas unos segundos. La primera impresión es buena aunque me deja un mal regusto algunos problemas que tiene al generar los ficheros DPROJ. Eso provoca errores (relacionados con XML) en el IDE. Para KAI todo es correcto, porque él por defecto realiza la compilación fuera del IDE. Sólo me ha pasado en algunos casos y lo achaco a esta primera versión 1.0.

Para evitar continuos avisos, deberéis desactivar el aviso cuando un fichero se modifica en disco «Ask to reload modified files» (apartado Editor), en la configuración del IDE.

Hasta aquí esta primera entrada. La primera impresión es buena, y vistos algunos problemas, para las siguientes actualizaré la versión de KAI para ver si se corrigen. Recuerdo que no estoy probando cómo funciona un agente de IA (en este caso estoy usando Github Copilot) sino la integración con el IDE.

Comentarios, sugerencias, propuestas, como siempre son bienvenidas.

Hasta la próxima.

 

 

 

Primera versión pública de la aplicación DebugStringView (v.1.1)

martes, 1 de abril de 2025 2 comentarios
Share Button

Hace unos días ya hablé en esta entrada de la API de Windows OutputDebugString y de cómo nos puede ser útil en nuestro día a día de programar cuando realizamos debug de nuestros programas.

También comenté en su día sobre algunas herramientas que nos ayudan a visualizar los mensajes que desde nuestras aplicaciones enviamos a la consola de debug. Las he utilizado (las 2 que comento en la entrada) y funcionan bien, pero al final no se ajustan a lo que a mi me gustaría o no tienen todo lo que a mi me gustaría que tuvieran; Algunas características están disponibles en una y al gunas en la otra. Así que mi decisión ha sido crear una nueva «a mi gusto» que tenga todo lo que yo quiero o necesito.

Tal vez no esté todo en esta primera versión, pero mi idea es ir completándola poco a poco con más características que tengo en mente.  De aquí es de dónde ha salido este nuevo proyecto (herramienta DebugStringView).

El código fuente está disponible en mi repositorio de Github y es gratuita y de libre uso. Para no alargar más esta entrada de «Presentación» os remito a la propia de la aplicación, ahí tenéis más información.

https://neftali.clubdelphi.com/debugstringview/

Ahí será donde vaya actualizando todo lo referente a esta herramienta.
Para descargar binarios podéis hacerlo desde aquí (página específica de la aplicación) , donde ya está disponible la descarga de los binarios (32 y 64 bits) en formato ZIP. No requiere instalación.

Para los que la utilicéis, os agradecería que me enviaseis comentarios y por supuesto posibles errores que encontréis y cualquier sugerencia de mejora que consideréis.

Componente TFormTabsBar en Delphi (aplicaciones con interfaz de pestañas)

miércoles, 12 de febrero de 2025 5 comentarios
Share Button

Interfaz en pestañasTFormTabsBar es un componente que ha llegado en la versión 12 de Delphi y que nos va a permitir generar nuestra aplicación con una interfaz basada en pestañas como patrón de diseño (además de otras opciones). Este componente del que ya he hablado anteriormente en la entrada que trataba los proyectos con Interfaz MDI. En esta ocación me voy a centrar en una característica que vimos de pasada en aquel artículo, pero que es aplicable a todas nuestras aplicaciones (no sólo las de interface MDI). Aunque posiblemente después de aquella entrada nos haya quedado la sensación de que sólo podemos sacarle partido en los formularios MDI (embarcadero ha creado de nuevo el soporte para este tipo de interface), este componente se puede usar también con aplicaciones SDI.

Para nosotros y de cara a nuestros proyectos, digamos que este componente nos facilita el trabajo de albergar multiples formularios en un interface de usuario basado en pestañas (el exponente más claro de esto son los navegadores actuales).

Leer más…

DelphiMVCFramework; Soporte para ActiveRecord

jueves, 3 de diciembre de 2020 8 comentarios
Share Button

Avanzando un poco más en el tema de las últimas entradas, voy a centrarme en esta característica que implementa DMVC. Voy a mostrar la utilización de ActiveRecord para “reimplementar” los métodos de GET, POST, PUT y DELETE que vimos en la última entrada. El resultado final será el mismo, pero cambiaremos la forma de obtener y devolver los datos y de realizar las operaciones sobre la Base de Datos.

A diferencia de la técnica de la tercera entrada, ActiveRecord, sólo podemos utilizarlo si estamos utilizando como componentes de conexión FireDAC.

A continuación os pongo los links de las anteriores:

Entrada 1: DelphiMVCFramework; Framework REST para Delphi
Entrada 2: DelphiMVCFramework; Primeros pasos
Entrada 3: DelphiMVCFramework; Acciones básicas (GET, POST, PUT y DELETE)
Entrada 4: DelphiMVCFramework; Soporte para ActiveRecord

A continuación vamos a ver una introducción al funcionamiento de ActiveRecord, característica que incluye DMVC, como patrón de programación.

PATRON ACTIVERECORD

Es un patrón de diseño que permite hacer mapeo objeto-relacional (ORM). Mapea un registro de una tabla de la Base de Datos a un objeto. Soporta operaciones CRUD.

ActiveRecord

Leer más…

Gratis, C++Builder® 10.1 Berlin Starter Edition

viernes, 17 de junio de 2016 Sin comentarios
Share Button

PROMOCIÓN ESPECIAL!!

Hoy (y no se si algunos días más) se puede descargar desde la web de embarcadero la versión Starter de C++ Builder 10.1 Berlín.

ClGAk_cXEAAcHbA

 

Enlace a la página.

Vídeo mostrando las características de esta versión.

Un saludo.

Tethering; Operaciones básicas…

miércoles, 23 de abril de 2014 12 comentarios
Share Button

images Una de las características más atractivas de la nueva versión de RAD Studio, y sobre la que seguro continuaremos hablando, pues están previstas ampliaciones y mejoras para las próximas versiones, es el AppThthering. Antes de continuar con el artículo, os dejo unos links por si queréis revisar documentación sobre esta característica. Si ya lo habéis revisado, pues podéis continuar con la introducción.

Lo primero a revisar es la DocWiki de Embarcadero. Con esta información ya podemos iniciar. No es que sea muy extensa, pero está la suficiente y básica del funcionamiento.

También podéis revisar la entrada anterior que publiqué en el blog, en la que os mostré algunas preguntas y respuestas que aparecieron en la presentación de embarcadero sobre características del nuevo RAD Studio. Hay un bloque dedicado a AppTethtering bastante clarificador.

Añadir un par de videos que se pueden encontrar en el canal de embarcadero:

Por último, os remito a algunas entradas de los blogs de embarcadero, como la de Sarina DuPond titulada “Extend your Windows apps to mobile with Tethering in XE6”,  o esta publicada en Fixed by Code titulada “Fun with Delphi XE6 App tethering and barcodes”.

 

INTRODUCCIÓN

Si a estas alturas no ha quedado claro (con todo lo anterior) qué es y para qué se usa el Tethering, sólo queda citar el siguiente párrafo (traducido):

Usando Tethering sus aplicaciones pueden fácilmente:

  • Descubrir otras aplicaciones que estén usando Tethering y ejecutándose en el mismo dispositivo o de otros dispositivos que estén conectados a la red (interna).
  • Ejecutar acciones de forma remota. Una aplicación puede “publicar” acciones, de forma que las otras aplicaciones puedan invocarlas/llamarlas de forma remota.
  • Compartir datos entre aplicaciones. El Tethering permite intercambiar tipos de Datos estándar y streams.

El tethering no depende de un protocolo específico de transporte de datos, de forma que se pueden implementar nuevos protocolos utilizando la API de tethering. La RTL proporciona soporte para conexiones ethernet que se ejecutan en la misma red local (LAN), incluso si se están ejecutando en el mismo dispositivo.

Hay que decir que el tethering, aunque puede ser muy útil en determinados escenarios, tiene un funcionamiento bastante básico desde el punto de vista del programador. Toda la gestión la realizamos utilizando 2 componentes (iguales para todas las aplicaciones que lo utilizan).

TTetheringManager

Este componente es el que está más enfocado a las conexiones entre dispositivos.

TTetheringAppProfile

Es el componente que está más enfocado al intercambio de Datos. Es el que se utiliza para “publicar” acciones que posteriormente se van a compartir entre aplicaciones o para enviar y recibir recursos.

  Leer más…

Categories: Delphi, FMX, Tethering, VCL, XE6 Tags: , ,

Dibujar porcentaje en una celda de un Grid

sábado, 19 de enero de 2008 8 comentarios
Share Button

En este ejemplo se muestra cómo dibujar manualmente una barra de porcentaje en una celda de un DBGrid. Presuponemos que en la celda en la que vamos a dibujar la barra se está mostrando un valor entre 0 y 100 que pertenece a un porcentaje. Este ejemplo muestra cómo se hace para un componente TDBGrid estándard; No es muy difícil adaptarlo para utilizarlo en un TStringGrid o similar.

Dibujar porcentaje en Grid

Download Descargar ejemplo

(Actualizacion 17/05/2021) He actualizado el ejemplo para mostrar cómo se utiliza el mismo evento para realizar esta acción sobre varias columnas.

Download Descargar ejemplo con 2 columnas

Categories: Ejemplos, VCL Tags: , , ,