Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
CodeDelphiNoticiasRAD Studio

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.

screenshot-2021-05-23-195219

Cosas que necesitará para compilar el código HeidiSQL

  • Necesita RAD Studio Delphi 10.4 o superior. Usé Delphi 10.42.
  • Es más fácil si tiene instalado algún tipo de cliente de control de código fuente de Git. Usé mi cliente GitHub Desktop favorito.
  • La fuente de HeidiSQL se basa en dos componentes personalizados: la fuente para ellos se incluye en la descarga de la fuente de HeidiSQL.
  • También debe descargar e instalar madExcept.
screenshot-2021-05-23-122652

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!)
screenshot-2021-05-23-125058

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

screenshot-2021-05-23-165604

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

screenshot-2021-05-23-122534

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:

  • SynEdit para proporcionar un área de editor de consultas resaltada por sintaxis.
  • VirtualTreeView para implementar una serie de vistas de interfaz de usuario de estilo de vista de lista y árbol muy rápido.

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)

screenshot-2021-05-23-131334

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:

  • Navegue a la .HeidiSQLcarpeta de origen raíz. Hay un archivo por lotes llamado “build-res.bat” – ejecute ese archivo. Debería completarse sin errores.
  • Ahora navegue a la carpeta .HeidiSQLsourcevcl-styles-utils. Hay un archivo llamado “CompileResources.bat”
  • Edite ese archivo con un editor de texto y elimine las rutas al comienzo de la línea “brcc32.exe”, por lo que solo dice ” brcc32.exe AwesomeFont.rc
  • Ahora guarde y luego ejecute ese archivo por lotes.
  • Edite el segundo archivo llamado “CompileResources_zip.bat” de la misma manera, eliminando la ruta; luego guárdelo y ejecútelo.
  • Ambos deben ejecutar el compilador de línea de comandos de Borland Resource y crear los archivos .res requeridos por el proyecto principal.

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

screenshot-2021-05-23-173020
screenshot-2021-05-23-173158

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.

screenshot-2021-05-23-174217

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:

screenshot-2021-05-23-175158

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

screenshot-2021-05-23-183918

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?


What's New for RAD Studio 11

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Artículos Relacionados
C++DelphiNoticiasRAD Studio

Ligas de Embarcadero Dev Lounge - Agosto 2021

DelphiDeveloper InterviewsInterviewNoticias

¿Qué se siente al ser un desarrollador Joe C. Hecht?

CodeNoticiasRAD Studio

Por qué definitivamente debería escribir menos código este año

DelphiDeveloper InterviewsInterviewNoticias

¿Qué se siente al ser un desarrollador Sunil Kumar Arora?

Leave a Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

IN THE ARTICLES