Website-Icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Extrahieren, Transformieren, Laden – Die Magie hinter HeidiSQL

heidisql hero image

HeidiSQL ist ein äußerst erfolgreiches Open-Source-Datenbankverwaltungstool. Abgesehen davon, dass es bei der Verwaltung von MySQL-, SQL Server-, PostgreSQL- und SQLite-Datenbanken äußerst nützlich ist, ist es auch Open Source – und dieser Quellcode ist in Delphi geschrieben. Wir haben uns zuvor einen kurzen Überblick darüber gegeben, aber dieses Mal haben wir nur an der Oberfläche dieses wunderbar kunstvollen Beispiels der Delphi-Programmierung in ihrer besten Form gekratzt. Der Code selbst ist vollgepackt mit wirklich großartigen Techniken. Schauen wir uns das genauer an.

Dinge, die Sie benötigen, um den HeidiSQL-Code zu kompilieren

madExcept installieren

Wenn Sie noch nicht auf madExcept gestoßen sind, bevor Sie etwas verpassen! Es ist ein wirklich großartiges Werkzeug zum Abfangen und Melden von Programmausnahmen, die auftreten, während Ihr Programm ausgeführt wird. Die Website erklärt ausführlicher, aber ich kann es nur empfehlen.

  1. Gehen Sie zu http://www.madshi.net/madExceptDescription.htm
  2. Laden Sie das Installationsprogramm herunter und führen Sie es aus
  3. Stellen Sie sicher, dass Sie madExcept v5. Das Installationsprogramm ist ein wenig verwirrend – klicken Sie auf Version 5 und es wird zur Installation ausgewählt (die Standardeinstellung ist nicht, Version 4 oder 5 zu installieren, was mich in der Vergangenheit verwirrt hat!)

Wenn es richtig installiert ist, wird Ihrem RAD Studio-Tools-Menü ein zusätzliches Menüelement hinzugefügt

Den HeidiSQL-Quellcode abrufen

Gehen Sie auf die HeidiSQL-Site und klicken Sie auf die Schaltfläche „Download Source“. Dadurch gelangen Sie zu folgendem Link: https://github.com/HeidiSQL/HeidiSQL

Installieren der erforderlichen Drittanbieterkomponenten

HeidiSQL setzt auf zwei zusätzliche Komponenten. Beachten Sie, dass beide Komponenten sehr beliebt sind, stellen Sie also sicher, dass Sie sie nicht bereits installiert haben. Wenn Sie sie nicht installiert haben, folgen Sie den Anweisungen unten. Die erforderlichen Elemente sind:

SynEdit installieren

Navigieren Sie zum ./HeidiSQL/components/synedit/Packages/Delphi10.4/SynEdit.groupprojProjekt und laden Sie es. Klicken Sie mit der rechten Maustaste und kompilieren Sie das SynEdit_R Projekt, und klicken Sie dann mit der rechten Maustaste und wählen Sie „Installieren“ für das SynEdit_D Design-Time-Paket.

Installieren von VirtualTreeView

Navigieren Sie zu ./HeidiSQL/components/virtualtreeview/packages/Delphi10.4/VirtualTrees.groupprojund laden Sie es. Klicken Sie mit der rechten Maustaste und kompilieren Sie das VirtualTreesR Laufzeitpaket. Klicken Sie nun mit der rechten Maustaste und wählen Sie „Installieren“ für das VirtualTreesD Design-Time-Paket.

Kompilieren der erforderlichen Ressourcendateien (.res)

Es gibt eine kleine Lücke in den Schritten, die ich beim Kompilieren von HeidiSQL aus dem Quellcode gesehen habe. Es gibt ein paar .rc-Ressourcendateien für Dinge wie Symbole und Schriftarten, und es schien nirgendwo zu geben, dass sie kompiliert werden müssen. Ich habe sie vielleicht übersehen (ich habe versucht, die verschiedenen Gruppenprojekte zu kompilieren), in diesem Fall lass es mich in den Kommentaren wissen und ich werde diesen Beitrag mit der Korrektur aktualisieren – aber bis dahin tun Sie Folgendes:

Öffnen und Kompilieren des HeidiSQL Delphi-Quellcodes

Richtig, wir sind bereit, das HeidiSQL-Hauptprojekt zu öffnen und sollten es ohne Fehler kompilieren können!

Navigieren Sie zum Projekt ./HeidiSQL/packages/Delphi10.4„ heidisql.dproj“ und öffnen Sie es .

Es sollte ohne Fehler geöffnet werden.

Wenn Sie CTRL+F9auf Build klicken, wird der Quellcode erstellt und Ihre persönliche Kopie der HeidiSQL-exe erstellt, die Sie im Ordner .HeidiSQLout finden sollten

Kleine Juwelen im HeidiSQL-Quellcode gefunden

Der HeidiSQL Delphi-Code ist ein Füllhorn an interessanten Methoden, kleinen Tricks und Techniken.

Beispielsweise wurde kürzlich die Unterstützung für benutzerdefinierte Stile eingeführt. Die Stile werden mithilfe einer .res-kompilierten Ressource in die App eingebettet. Wenn Sie zur Quelle des Projekts navigieren (Hauptmenü, Projekt, Quelle anzeigen). Scrollen Sie nach unten und Sie sehen die Zeile:{$R ....resstyles.RES}

Es verwendet immer noch den TStyleManager, um diese Stile sicher zu laden, aber sie werden aus der internen Ressource geladen. Dies hat den Vorteil, dass die Stildateien nicht mit der vom Endbenutzer kompilierten Anwendung geliefert werden müssen, der Nachteil ist jedoch, dass die App auf die eingebettete Auswahl beschränkt ist. Ich persönlich bevorzuge es, wenn ich dies selbst mache, nach externen Stildateien als Teil des Prozesses zu suchen, der es Leuten ermöglicht, neue Stile bereitzustellen, indem sie sie einfach in einen bestimmten Ordner legen, den mein Code scannt und in die Liste lädt. Trotzdem neigt der HeidiSQL-Code dazu, die Dinge auf seine eigene Weise zu tun und zu versuchen, so schlank wie möglich zu sein, was meiner Meinung nach ein bewundernswerter Ansatz ist.

HeidiSQL ist mehrsprachig

HeidiSQL kann mit mehreren der wichtigsten relationalen Datenbanksysteme „sprechen“. Bemerkenswert ist, dass dies ohne die Verwendung eines der gängigen Datenbankkomponentensätze wie FireDAC, AnyDAC, MyDAC usw. geschieht.

Wenn wir zur Unit dbConnection und dann zur CreateConnection-Methode navigieren, sehen wir den folgenden Code:

Dies ist der entscheidende Punkt, an dem HeidiSQL so geschickt seine Zunge über die verschiedenen SQL-Dialekte drehen kann.

Von da an führt HeidiSQL SQL-Abfragen mit sehr geringem Variationsbedarf aus. Es ist ein bemerkenswert knapper Code, der einen hervorragend prägnanten Programmierstil überlagert. Entwickler Ansgar Becker kennt sich wirklich aus. Ich habe immer gesagt, dass Sie, wenn Sie den Code eines anderen Programmierers lange genug lesen, wirklich eine Vorstellung von dem Verstand bekommen, der ihn erstellt hat.

Andere versteckte Schätze

Das Durchlaufen der verschiedenen Elemente des HeidiSQL-Codes offenbart viele andere Freuden. Es gibt einen Logging-Bereich, der Nutzungs- und Umgebungsstatistiken aufzeichnet und über ein PHP-Skript an einen externen Webserver zurückmeldet. Optional kann die App die ausgeführten Abfragen auch in einer lokalen Protokolldatei protokollieren.

Es gibt auch einen benutzerdefinierten Updater, der nach einer automatischen Aktualisierung der ausführbaren Datei suchen und diese ausführen kann. Weitere Informationen finden Sie in der Einheit „UpdateCheck“.

HeidiSQL verfügt auch über eine hervorragende Exportfunktion, mit der Benutzer die Ergebnisse ihrer SQL-Abfragen in alle möglichen Formate exportieren können, einschließlich des etwas esoterischen LaTex und WikiMarkup. Diese Möglichkeit, Abfragen auszuführen, um die Daten zu extrahieren, fast unabhängig von der SQL-Datenbankserver-Technologie, sie in einer benutzerfreundlichen Ansicht anzuzeigen, zu transformieren und in etwas anderes zu exportieren, hat HeidiSQL sehr schnell zum goto DB-Manager-Tool für viele gemacht Menschen.

Das HeidiSQL-Projekt nimmt Spenden auf seiner offiziellen Webseite hier an: https://www.heidisql.com/donate.php – es ist definitiv ein verdientes Delphi-Projekt.


RAD Studio Delphi ist die Kraft hinter einigen der weltweit beliebtesten Softwares – probieren Sie es selbst aus und sehen Sie, was es für Sie tun kann.

Die mobile Version verlassen