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

Extraire, transformer, charger – La magie derrière HeidiSQL

heidisql hero image

HeidiSQL est un outil de gestion de base de données open source très réussi. En plus d’être extrêmement utile dans la gestion des bases de données MySQL, SQL Server, PostgreSQL et SQLite, il est également open source – et ce code source est écrit en Delphi. Nous en avons déjà fait un bref aperçu, mais cette fois, nous n’avons fait qu’effleurer la surface de cet exemple merveilleusement astucieux de la programmation Delphi à son meilleur. Le code lui-même regorge de très bonnes techniques. Regardons-le de plus près.

screenshot 2021 05 23 195219

Choses dont vous aurez besoin pour compiler le code HeidiSQL

  • Vous avez besoin de RAD Studio Delphi 10.4 ou supérieur. J’ai utilisé Delphi 10.42.
  • C’est plus facile si vous avez installé une forme de client de contrôle de code source Git. J’ai utilisé mon client GitHub Desktop préféré.
  • La source HeidiSQL repose sur deux composants personnalisés – la source pour eux est incluse dans le téléchargement de la source HeidiSQL.
  • Vous devez également télécharger et installer madExcept.
screenshot 2021 05 23 122652

Installation de madExcept

Si vous n’avez pas rencontré madExcept avant de passer à côté ! C’est un très bon outil pour intercepter et signaler les exceptions de programme qui se produisent pendant l’exécution de votre programme. Le site Web explique plus en détail mais je le recommande vivement.

  1. Allez sur http://www.madshi.net/madExceptDescription.htm
  2. Téléchargez et exécutez le programme d’installation
  3. Assurez-vous de vérifier madExcept v5. Le programme d’installation est un peu déroutant – cliquez sur la version 5 et il le sélectionnera pour être installé (la valeur par défaut n’est pas d’installer la version 4 ou 5 qui m’a dérouté dans le passé !)

screenshot 2021 05 23 125058

Lorsqu’il est correctement installé, un élément de menu supplémentaire sera ajouté à votre menu d’outils RAD Studio

screenshot 2021 05 23 165604

Obtenir le code source HeidiSQL

Rendez-vous sur le site HeidiSQL et cliquez sur le bouton « télécharger la source ». Cela vous mènera au lien suivant : https://github.com/HeidiSQL/HeidiSQL

screenshot 2021 05 23 122534

Installation des composants tiers requis

HeidiSQL repose sur deux composants supplémentaires. Notez que les deux composants sont très populaires, alors assurez-vous de ne pas les avoir déjà installés. Si vous ne les avez pas installés, suivez les instructions ci-dessous. Les éléments requis sont :

  • SynEdit pour fournir une zone d’éditeur de requête avec mise en évidence de la syntaxe.
  • VirtualTreeView pour implémenter un certain nombre de vues d’interface utilisateur de style arborescence et liste très rapides.

Installation de SynEdit

Accédez au ./HeidiSQL/components/synedit/Packages/Delphi10.4/SynEdit.groupprojprojet et chargez-le. Faites un clic droit et compilez le SynEdit_R projet, puis faites un clic droit et sélectionnez « installer » pour le SynEdit_D package de conception.

Installation de VirtualTreeView

Accédez au ./HeidiSQL/components/virtualtreeview/packages/Delphi10.4/VirtualTrees.groupprojet chargez-le. Faites un clic droit et compilez le VirtualTreesR package d’exécution. Maintenant, faites un clic droit et sélectionnez « installer » pour le VirtualTreesD package de conception.

Compilation des fichiers de ressources requis (.res)

screenshot 2021 05 23 131334

Il y a un petit écart dans les étapes que j’ai vues pour compiler HeidiSQL à partir du code source. Il y a quelques fichiers de ressources .rc pour des choses comme les icônes et les polices et il ne semble y avoir nulle part indiquant qu’ils doivent être compilés. Je les ai peut-être manqués (j’ai essayé de compiler les différents projets de groupe), auquel cas faites-le moi savoir dans les commentaires et je mettrai à jour ce post avec la correction – mais jusque-là, procédez comme suit :

  • Accédez au .HeidiSQLdossier source racine. Il y a un fichier batch appelé « build-res.bat » – exécutez ce fichier. Il devrait se terminer sans erreurs.
  • Accédez maintenant au dossier .HeidiSQLsourcevcl-styles-utils. Il y a un fichier appelé « CompileResources.bat »
  • Modifiez ce fichier avec un éditeur de texte et supprimez les chemins au début de la ligne  » brcc32.exe « , il suffit donc de dire  » brcc32.exe AwesomeFont.rc« 
  • Maintenant, enregistrez, puis exécutez ce fichier de commandes.
  • Modifiez le deuxième fichier appelé « CompileResources_zip.bat » de la même manière, en supprimant le chemin ; puis enregistrez-le et exécutez-le.
  • Les deux doivent exécuter le compilateur en ligne de commande Borland Resource et créer les fichiers .res requis par le projet principal.

Ouverture et compilation du code source HeidiSQL Delphi

Bon, nous sommes prêts à ouvrir le projet principal HeidiSQL et devrions pouvoir le compiler sans erreur !

Naviguez jusqu’au projet  » ./HeidiSQL/packages/Delphi10.4 » et ouvrez-le heidisql.dproj.

Il devrait s’ouvrir sans aucune erreur.

Si vous appuyez sur CTRL+F9pour le compiler, il créera le code source et créera votre propre copie personnelle de l’exe HeidiSQL que vous devriez trouver dans le dossier .HeidiSQLout

screenshot 2021 05 23 173020
screenshot 2021 05 23 173158

Petites pépites trouvées dans le code source HeidiSQL

Le code HeidiSQL Delphi est une corne d’abondance de méthodes intéressantes, de petites astuces et de techniques.

screenshot 2021 05 23 174217

Par exemple, il a récemment introduit la prise en charge des styles personnalisés. Les styles sont intégrés dans l’application à l’aide d’une ressource compilée .res. Si vous naviguez jusqu’à la source du projet (menu principal, projet, vue source). Faites défiler vers le bas et vous verrez la ligne :{$R ....resstyles.RES}

Il utilise toujours le TStyleManager pour charger ces styles en toute sécurité, mais ils sont chargés à partir de la ressource interne. L’avantage de cela, les fichiers de style n’ont pas à être livrés avec l’application compilée par l’utilisateur final, mais l’inconvénient est que l’application est limitée à la sélection intégrée. Personnellement, lorsque je fais cela moi-même, je préfère rechercher des fichiers de style externes dans le cadre du processus qui permet aux personnes de fournir de nouveaux styles simplement en les plaçant dans un dossier désigné que mon code analyse et charge dans la liste. Cela dit, le code HeidiSQL tend à faire les choses à sa manière et à essayer d’être aussi léger que possible, ce qui, à mon avis, est une approche admirable.

HeidiSQL est polyglotte

HeidiSQL peut « parler » à plusieurs des principaux systèmes de bases de données relationnelles. Ce qui est remarquable, c’est qu’il le fait sans utiliser aucun des ensembles de composants de base de données populaires tels que FireDAC, AnyDAC, MyDAC, etc.

Si nous naviguons vers l’unité dbConnection, puis la méthode CreateConnection, nous verrons le code suivant :

screenshot 2021 05 23 175158

C’est le point clé où HeidiSQL peut si habilement tordre sa langue autour des différents dialectes SQL.

À partir de là, HeidiSQL exécute des requêtes SQL avec très peu de variation requise. C’est un morceau de code remarquablement laconique qui recouvre un style de programmation superbement succinct. Le développeur Ansgar Becker connaît vraiment son affaire. J’ai toujours dit que si vous lisez le code d’un autre programmeur assez longtemps, vous aurez vraiment une idée de l’esprit qui l’a créé.

Autres joyaux cachés

screenshot 2021 05 23 183918

Parcourir les différents éléments du code HeidiSQL révèle bien d’autres plaisirs. Il existe une section de journalisation qui enregistre et rapporte les statistiques d’utilisation et d’environnement à un serveur Web externe via un script PHP. L’application peut également éventuellement enregistrer les requêtes exécutées dans un fichier journal local.

Il existe également un programme de mise à jour personnalisé qui peut rechercher et exécuter une mise à jour automatique de l’exécutable. Regardez l’unité « UpdateCheck » pour plus de détails.

HeidiSQL dispose également d’une excellente fonction d’exportation permettant aux utilisateurs de prendre les résultats de leurs requêtes SQL et de les exporter dans toutes sortes de formats, y compris le LaTex légèrement ésotérique et WikiMarkup. C’est ce genre de capacité à exécuter des requêtes pour extraire les données, presque indépendamment de la technologie du serveur de base de données SQL, les afficher dans une vue conviviale, les transformer et les exporter vers quelque chose d’autre qui a très rapidement fait de HeidiSQL l’outil de gestion de base de données goto pour beaucoup gens.

Le projet HeidiSQL accepte les dons sur leur page Web officielle ici : https://www.heidisql.com/donate.php – c’est définitivement un projet Delphi méritant.


RAD Studio Delphi est la puissance derrière certains des logiciels les plus populaires au monde – pourquoi ne pas l’essayer vous-même et voir ce qu’il peut faire pour vous ?

Dev Days of Summer 2-24

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

Leave a Reply

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

IN THE ARTICLES