Ícono del sitio Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Extraer, transformar, cargar: la magia detrás de HeidiSQL

heidisql hero image

HeidiSQL es una herramienta de gestión de bases de datos de código abierto de gran éxito. Además de ser extremadamente útil en la gestión de bases de datos MySQL, SQL Server, PostgreSQL y SQLite, también es de código abierto, y ese código fuente está escrito en Delphi. Hemos hecho una breve descripción general de esto antes, pero esa vez solo arañamos la superficie de este ejemplo maravillosamente ingenioso de la programación Delphi en su mejor momento. El código en sí está repleto de técnicas realmente geniales. Echemos un vistazo más de cerca.

Cosas que necesitará para compilar el código HeidiSQL

Instalación de madExcept

Si no te has encontrado loco, ¡excepto antes de que te lo pierdas! Es una herramienta realmente excelente para interceptar e informar sobre las excepciones del programa que ocurren mientras su programa está en ejecución. El sitio web lo explica con más detalle, pero lo recomiendo encarecidamente.

  1. Vaya a http://www.madshi.net/madExceptDescription.htm
  2. Descarga y ejecuta el instalador
  3. Asegúrese de marcar madExcept v5. El instalador es un poco confuso: haga clic en la versión 5 y lo seleccionará para instalarlo (¡el valor predeterminado es no instalar la versión 4 o 5, lo cual me ha confundido en el pasado!)

Cuando esté instalado correctamente, se agregará un elemento de menú adicional al menú de herramientas de RAD Studio

Obtener el código fuente de HeidiSQL

Dirígete al sitio de HeidiSQL y haz clic en el botón “Descargar fuente”. Esto lo llevará al siguiente enlace: https://github.com/HeidiSQL/HeidiSQL

Instalación de los componentes de terceros necesarios

HeidiSQL se basa en dos componentes adicionales. Tenga en cuenta que ambos componentes son muy populares, así que asegúrese de no tenerlos instalados. Si no los tiene instalados, siga las instrucciones a continuación. Los elementos requeridos son:

Instalación de SynEdit

Navega hasta el ./HeidiSQL/components/synedit/Packages/Delphi10.4/SynEdit.groupprojproyecto y cárgalo. Haga clic derecho y compile el SynEdit_R proyecto y luego haga clic derecho y seleccione “instalar” para el SynEdit_D paquete de tiempo de diseño.

Instalación de VirtualTreeView

Navegue hasta ./HeidiSQL/components/virtualtreeview/packages/Delphi10.4/VirtualTrees.groupprojy cárguelo. Haga clic derecho y compile el VirtualTreesR paquete en tiempo de ejecución. Ahora haga clic derecho y seleccione “instalar” para el VirtualTreesD paquete de tiempo de diseño.

Compilación de archivos de recursos necesarios (.res)

Hay una pequeña brecha en los pasos que vi sobre la compilación de HeidiSQL a partir del código fuente. Hay algunos archivos de recursos .rc para cosas como íconos y fuentes y no parece haber ningún lugar que diga que es necesario compilarlos. Es posible que los haya perdido (intenté compilar los diversos proyectos grupales), en cuyo caso, avíseme en los comentarios y actualizaré esta publicación con la corrección, pero hasta entonces haga lo siguiente:

Abrir y compilar el código fuente de HeidiSQL Delphi

Bien, estamos listos para abrir el proyecto principal de HeidiSQL y deberíamos poder compilarlo sin errores.

Navegue ./HeidiSQL/packages/Delphi10.4y abra el heidisql.dprojproyecto ” “.

Debería abrirse sin errores.

Si presiona CTRL+F9para compilar, generará el código fuente y creará su propia copia personal del exe de HeidiSQL que debe encontrar en la carpeta .HeidiSQLout

Pequeñas joyas encontradas en el código fuente de HeidiSQL

El código HeidiSQL Delphi es una cornucopia de métodos interesantes, pequeños trucos y técnicas.

Por ejemplo, recientemente introdujo soporte para estilos personalizados. Los estilos están incrustados en la aplicación mediante un recurso compilado .res. Si navega a la fuente del proyecto (menú principal, proyecto, ver fuente). Desplácese hacia abajo y verá la línea:{$R ....resstyles.RES}

Todavía usa TStyleManager para cargar esos estilos de manera segura, pero se cargan desde el recurso interno. La ventaja de esto es que los archivos de estilo no tienen que enviarse con la aplicación compilada por el usuario final, pero la desventaja es que la aplicación se limita a la selección incrustada. Personalmente, cuando hago esto yo mismo, prefiero buscar archivos de estilo externos como parte del proceso que permite que las personas suministren nuevos estilos simplemente colocándolos en una carpeta designada que mi código escanea y carga en la lista. Dicho esto, el código HeidiSQL se inclina hacia hacer las cosas a su manera y tratando de ser lo más sencillo posible, lo que creo que es un enfoque admirable.

HeidiSQL es poliglotal

HeidiSQL puede “hablar” con varios de los principales sistemas de bases de datos relacionales. Lo notable es que hace esto sin utilizar ninguno de los conjuntos de componentes de bases de datos populares, como FireDAC, AnyDAC, MyDAC, etc.

Si navegamos hasta la unidad dbConnection y luego el método CreateConnection veremos el siguiente código:

Este es el punto clave donde HeidiSQL puede torcer tan hábilmente su lengua alrededor de los diversos dialectos SQL.

A partir de ese momento, HeidiSQL ejecuta consultas SQL con muy poca variación requerida. Es una pieza de código notablemente concisa que se superpone a un estilo de programación magníficamente sucinto. El desarrollador Ansgar Becker realmente sabe lo que hace. Siempre he dicho que si lees el código de otro programador durante el tiempo suficiente, realmente te harás una idea de la mente que lo creó.

Otras gemas ocultas

Seguir los diversos elementos del código HeidiSQL revela muchas otras delicias. Hay una sección de registro que registra e informa sobre el uso y las estadísticas del entorno a un servidor web externo a través de un script PHP. La aplicación también puede registrar opcionalmente las consultas ejecutadas en un archivo de registro local.

También hay un actualizador personalizado que puede buscar y ejecutar una actualización automática del ejecutable. Mire la unidad “UpdateCheck” para más detalles.

HeidiSQL también tiene una excelente función de exportación que permite a los usuarios tomar los resultados de sus consultas SQL y exportarlos en todo tipo de formatos, incluidos LaTex y WikiMarkup, ligeramente esotéricos. Es este tipo de capacidad para ejecutar consultas para extraer los datos, casi independientemente de la tecnología del servidor de base de datos SQL, mostrarlos en una vista fácil de usar, transformarlos y exportarlos a otra cosa, lo que ha convertido rápidamente a HeidiSQL en la herramienta de administración de base de datos para muchos. personas.

El proyecto HeidiSQL acepta donaciones en su página web oficial aquí: https://www.heidisql.com/donate.php – definitivamente es un proyecto Delphi que lo merece.


RAD Studio Delphi es el poder detrás de algunos de los software más populares del mundo. ¿Por qué no probarlo usted mismo y ver qué puede hacer por usted?

Salir de la versión móvil