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.
Table of Contents
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.
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.
- Vaya a http://www.madshi.net/madExceptDescription.htm
- Descarga y ejecuta el instalador
- 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:
- 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.groupproj
proyecto 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.groupproj
y 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:
- Navegue a la
.HeidiSQL
carpeta 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.4
y abra el heidisql.dproj
proyecto ” “.
Debería abrirse sin errores.
Si presiona CTRL+F9
para 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?