HeidiSQL — чрезвычайно успешный инструмент управления базами данных с открытым исходным кодом. Помимо того, что он чрезвычайно полезен для управления базами данных MySQL, SQL Server, PostgreSQL и SQLite, он также имеет открытый исходный код, и этот исходный код написан на Delphi. Мы уже делали краткий обзор этого раньше, но в тот раз мы коснулись лишь поверхности этого чудесно искусного примера программирования на Delphi в лучшем виде. Сам код содержит действительно отличные методы. Давайте посмотрим на это поближе.
Table of Contents
Что вам понадобится для компиляции кода HeidiSQL
- Вам потребуется RAD Studio Delphi 10.4 или выше. Я использовал Delphi 10.42.
- Это проще, если у вас установлен клиент управления исходным кодом Git. Я использовал свой любимый клиент GitHub Desktop.
- Исходный код HeidiSQL основан на двух пользовательских компонентах — исходный код для них включен в загрузку исходного кода HeidiSQL.
- Вам также следует скачать и установить madExcept.
Установка madExcept
Если вы не сталкивались с madExcept до того, как пропустите! Это действительно отличный инструмент для перехвата программных исключений, возникающих во время работы вашей программы, и создания отчетов о них. Веб-сайт объясняет более подробно, но я настоятельно рекомендую его.
- Перейдите на http://www.madshi.net/madExceptDescription.htm.
- Скачайте и запустите установщик
- Убедитесь, что вы отметили madExcept v5. Программа установки немного сбивает с толку — нажмите на версию 5, и она выберет ее для установки (по умолчанию не устанавливаются версии 4 или 5, которые меня раньше сбивали с толку!)
После правильной установки в меню инструментов RAD Studio будет добавлен дополнительный пункт.
Получение исходного кода HeidiSQL
Перейдите на сайт HeidiSQL и нажмите кнопку «Загрузить источник». Вы перейдете по следующей ссылке: https://github.com/HeidiSQL/HeidiSQL
Установка необходимых сторонних компонентов
HeidiSQL полагается на два дополнительных компонента. Обратите внимание, что оба компонента очень популярны, поэтому убедитесь, что они еще не установлены. Если они у вас не установлены, следуйте приведенным ниже инструкциям. Необходимые предметы:
- SynEdit для предоставления области редактора запросов с подсветкой синтаксиса.
- VirtualTreeView для реализации ряда очень быстрых представлений пользовательского интерфейса в виде дерева и списка.
Установка SynEdit
Перейдите к ./HeidiSQL/components/synedit/Packages/Delphi10.4/SynEdit.groupproj
проекту и загрузите его. Щелкните правой кнопкой мыши и скомпилируйте SynEdit_R
проект, а затем щелкните правой кнопкой мыши и выберите «установить» для SynEdit_D
пакета времени разработки.
Установка VirtualTreeView
Перейдите к ./HeidiSQL/components/virtualtreeview/packages/Delphi10.4/VirtualTrees.groupproj
и загрузите его. Щелкните правой кнопкой мыши и скомпилируйте VirtualTreesR
пакет среды выполнения. Теперь щелкните правой кнопкой мыши и выберите «установить» для VirtualTreesD
пакета времени разработки.
Компиляция файлов требуемых ресурсов (.res)
Есть небольшой пробел в шагах, которые я видел при компиляции HeidiSQL из исходного кода. Есть несколько файлов ресурсов .rc для таких вещей, как значки и шрифты, и нигде не было сказано, что их нужно скомпилировать. Возможно, я их пропустил (я пытался скомпилировать различные групповые проекты), и в этом случае дайте мне знать в комментариях, и я обновлю этот пост с исправлением, но до тех пор сделайте следующее:
- Перейдите в
.HeidiSQL
корневую исходную папку. Там есть командный файл под названием «build-res.bat» — запустите этот файл. Он должен пройти без ошибок. - Теперь перейдите в папку .HeidiSQLsourcevcl-styles-utils. Там есть файл под названием «CompileResources.bat».
- Отредактируйте этот файл в текстовом редакторе и удалите пути в начале строки «brcc32.exe», так что там просто написано «
brcc32.exe AwesomeFont.rc
» - Теперь сохраните и запустите этот командный файл.
- Отредактируйте второй файл «CompileResources_zip.bat» таким же образом, удалив путь; затем сохраните и выполните его.
- Оба должны запускать компилятор командной строки Borland Resource и создавать файлы .res, необходимые для основного проекта.
Открытие и компиляция исходного кода HeidiSQL Delphi
Итак, мы готовы открыть основной проект HeidiSQL и сможем скомпилировать его без ошибок!
Найдите ./HeidiSQL/packages/Delphi10.4
и откройте проект « heidisql.dproj
».
Он должен открываться без ошибок.
Если вы нажмете CTRL+F9
кнопку build, он соберет исходный код и создаст вашу собственную копию HeidiSQL exe, которую вы должны найти в папке .HeidiSQLout.
Маленькие жемчужины, обнаруженные в исходном коде HeidiSQL
Код HeidiSQL Delphi — это рог изобилия интересных методов, маленьких уловок и приемов.
Например, недавно появилась поддержка пользовательских стилей. Стили встраиваются в приложение с помощью скомпилированного ресурса .res. Если вы перейдете к источнику проекта (главное меню, проект, просмотр исходного кода). Прокрутите вниз, и вы увидите строку:{$R ....resstyles.RES}
Он по-прежнему использует TStyleManager для безопасной загрузки этих стилей, но они загружаются из внутреннего ресурса. Преимущество этого заключается в том, что файлы стилей не должны поставляться с приложением, скомпилированным конечным пользователем, но недостатком является то, что приложение ограничено встроенным выбором. Лично, когда я делаю это сам, я предпочитаю искать внешние файлы стилей как часть процесса, который позволяет людям предоставлять новые стили, просто помещая их в назначенную папку, которую мой код сканирует и загружает в список. Тем не менее, код HeidiSQL склоняется к тому, чтобы делать все по-своему и стараться быть максимально экономичным, что, на мой взгляд, является замечательным подходом.
HeidiSQL — многоязычный
HeidiSQL может «разговаривать» с несколькими основными системами реляционных баз данных. Что примечательно, так это то, что он делает это без использования каких-либо популярных наборов компонентов базы данных, таких как FireDAC, AnyDAC, MyDAC и т. Д.
Если мы перейдем к модулю dbConnection, а затем к методу CreateConnection, мы увидим следующий код:
Это ключевой момент, в котором HeidiSQL может так ловко использовать различные диалекты SQL.
С этого момента HeidiSQL выполняет SQL-запросы с минимальными изменениями. Это замечательно сжатый фрагмент кода, перекрывающий великолепно сжатый стиль программирования. Разработчик Ансгар Беккер действительно знает свое дело. Я всегда говорил, что если вы достаточно долго читаете код другого программиста, вы действительно получите представление о уме, который его создал.
Другие скрытые жемчужины
Изучение различных элементов кода HeidiSQL открывает множество других прелестей. Существует раздел регистрации, который записывает и сообщает статистику использования и среды на внешний веб-сервер с помощью сценария PHP. Приложение также может дополнительно регистрировать выполняемые запросы в локальном файле журнала.
Существует также настраиваемая программа обновления, которая может проверять и запускать автоматическое обновление исполняемого файла. См. Подробности в разделе «UpdateCheck».
HeidiSQL также имеет отличную возможность экспорта, позволяющую пользователям извлекать результаты своих SQL-запросов и экспортировать их во всевозможные форматы, включая слегка эзотерический LaTex и WikiMarkup. Именно такая возможность запускать запросы для извлечения данных, почти независимо от технологии сервера баз данных SQL, показывать их в удобном для пользователя виде, преобразовывать и экспортировать их во что-то еще, что очень быстро сделало HeidiSQL инструментом для управления базами данных goto для многих. люди.
Проект HeidiSQL принимает пожертвования на своей официальной веб-странице здесь: https://www.heidisql.com/donate.php — это определенно достойный проект Delphi.
RAD Studio Delphi — это сила, стоящая за одним из самых популярных в мире программ. Почему бы не попробовать его самому и не посмотреть, что оно может для вас сделать?