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

Extrair, transformar, carregar – a mágica por trás do HeidiSQL

heidisql hero image

HeidiSQL é uma ferramenta de gerenciamento de banco de dados de código aberto de grande sucesso. Além de ser extremamente útil no gerenciamento de bancos de dados MySQL, SQL Server, PostgreSQL e SQLite também é open source – e esse código-fonte é escrito em Delphi. Demos uma breve visão geral disso antes, mas dessa vez apenas arranhamos a superfície desse exemplo maravilhosamente artístico de programação Delphi no seu melhor. O próprio código está repleto de técnicas realmente excelentes. Vamos dar uma olhada nisso.

screenshot 2021 05 23 195219

Coisas que você precisa para compilar o código HeidiSQL

  • Você precisa do RAD Studio Delphi 10.4 ou superior. Usei Delphi 10.42.
  • É mais fácil se você tiver algum tipo de cliente de controle de código-fonte Git instalado. Usei meu cliente GitHub Desktop favorito.
  • A fonte HeidiSQL depende de dois componentes personalizados – a fonte para eles está incluída no download da fonte HeidiSQL.
  • Você também deve baixar e instalar madExcept.
screenshot 2021 05 23 122652

Instalando madExcept

Se você ainda não se deparou com o mal, exceto antes, você está perdendo! É uma ferramenta realmente excelente para interceptar e relatar exceções de programa que ocorrem enquanto seu programa está em execução. O site explica com mais detalhes, mas eu o recomendo totalmente.

  1. Vá para http://www.madshi.net/madExceptDescription.htm
  2. Baixe e execute o instalador
  3. Certifique-se de verificar madExcept v5. O instalador é um pouco confuso – clique na versão 5 e ele irá selecioná-lo para ser instalado (o padrão é não instalar a versão 4 ou 5, o que me confundiu no passado!)
screenshot 2021 05 23 125058

Quando estiver devidamente instalado, haverá um item de menu extra adicionado ao menu de ferramentas do RAD Studio

screenshot 2021 05 23 165604

Obtendo o código-fonte do HeidiSQL

Vá para o site do HeidiSQL e clique no botão “download source”. Isso o levará ao seguinte link: https://github.com/HeidiSQL/HeidiSQL

screenshot 2021 05 23 122534

Instalar os componentes de terceiros necessários

O HeidiSQL depende de dois componentes adicionais. Observe que os dois componentes são muito populares, portanto, certifique-se de que ainda não os tenha instalado. Se você não os instalou, siga as instruções abaixo. Os itens necessários são:

  • SynEdit para fornecer uma área do editor de consulta destacada pela sintaxe.
  • VirtualTreeView para implementar uma série de visualizações de IU em estilo de árvore e listview muito rápidas.

Instalando SynEdit

Navegue até o ./HeidiSQL/components/synedit/Packages/Delphi10.4/SynEdit.groupprojprojeto e carregue-o. Clique com o botão direito e compile o SynEdit_R projeto e, a seguir, clique com o botão direito e selecione “instalar” para o SynEdit_D pacote de tempo de design.

Instalando VirtualTreeView

Navegue até o ./HeidiSQL/components/virtualtreeview/packages/Delphi10.4/VirtualTrees.groupproje carregue-o. Clique com o botão direito e compile o VirtualTreesR pacote runtime. Agora clique com o botão direito e selecione “instalar” para o VirtualTreesD pacote de tempo de design.

Compilar arquivos de recurso (.res) necessários

screenshot 2021 05 23 131334

Há uma pequena lacuna nas etapas que vi sobre a compilação do HeidiSQL a partir do código-fonte. Existem alguns arquivos de recursos .rc para itens como ícones e fontes e não parecia haver nenhum lugar dizendo que eles precisavam ser compilados. Posso ter perdido eles (tentei compilar os vários projetos do grupo), nesse caso, deixe-me saber nos comentários e atualizarei este post com a correção – mas até então faça o seguinte:

  • Navegue até a .HeidiSQLpasta de origem raiz. Lá, há um arquivo em lote chamado “build-res.bat” – execute esse arquivo. Deve ser concluído sem erros.
  • Agora navegue até a pasta .HeidiSQLsourcevcl-styles-utils. Lá está um arquivo chamado “CompileResources.bat”
  • Edite esse arquivo com um editor de texto e remova os caminhos no início da linha “brcc32.exe” para que apenas diga “ brcc32.exe AwesomeFont.rc
  • Agora salve e execute o arquivo em lote.
  • Edite o segundo arquivo chamado “CompileResources_zip.bat” da mesma forma, removendo o caminho; em seguida, salve e execute-o.
  • Ambos devem executar o compilador de linha de comando Borland Resource e criar os arquivos .res exigidos pelo projeto principal.

Abrindo e compilando o código-fonte HeidiSQL Delphi

Certo, estamos prontos para abrir o projeto principal do HeidiSQL e devemos poder compilá-lo sem erros!

Acesse ./HeidiSQL/packages/Delphi10.4e abra o heidisql.dprojprojeto “ ”.

Deve abrir sem erros.

Se você clicar em CTRL+F9para construir, ele irá construir o código-fonte e criar sua própria cópia pessoal do exe HeidiSQL que você deve encontrar na pasta .HeidiSQLout

screenshot 2021 05 23 173020
screenshot 2021 05 23 173158

Pequenas joias encontradas no código-fonte do HeidiSQL

O código HeidiSQL Delphi é uma cornucópia de métodos interessantes, pequenos truques e técnicas.

screenshot 2021 05 23 174217

Por exemplo, recentemente introduziu suporte para estilos personalizados. Os estilos são incorporados ao aplicativo usando um recurso compilado .res. Se você navegar até o código-fonte do projeto (menu principal, projeto, ver código-fonte). Role para baixo e você verá a linha:{$R ....resstyles.RES}

Ele ainda usa o TStyleManager para carregar com segurança esses estilos, mas eles são carregados do recurso interno. A vantagem disso é que os arquivos de estilo não precisam ser enviados com o aplicativo compilado pelo usuário final, mas a desvantagem é que o aplicativo é limitado à seleção incorporada. Pessoalmente, quando eu mesmo faço isso, prefiro procurar arquivos de estilo externos como parte do processo, o que permite que as pessoas forneçam novos estilos simplesmente colocando-os em uma pasta designada que meu código verifica e carrega na lista. Dito isso, o código HeidiSQL tende a fazer as coisas do seu próprio jeito e tentar ser o mais enxuto possível, o que eu acho uma abordagem admirável.

HeidiSQL é poliglota

HeidiSQL pode “falar” com vários dos principais sistemas de banco de dados relacionais. O que é notável é que ele faz isso sem usar nenhum dos conjuntos de componentes de banco de dados populares, como FireDAC, AnyDAC, MyDAC e assim por diante.

Se navegarmos para a unidade dbConnection e, em seguida, para o método CreateConnection, veremos o seguinte código:

screenshot 2021 05 23 175158

Este é o ponto-chave onde o HeidiSQL pode torcer habilmente sua língua em torno dos vários dialetos SQL.

A partir de então, o HeidiSQL executa consultas SQL com muito pouca variação necessária. É um pedaço de código notavelmente conciso sobrepondo um estilo de programação extremamente sucinto. O desenvolvedor Ansgar Becker realmente conhece suas coisas. Sempre disse que, se você ler o código de outro programador por tempo suficiente, terá realmente uma ideia da mente que o criou.

Outras joias escondidas

screenshot 2021 05 23 183918

Seguir os vários elementos do código HeidiSQL revela muitas outras delícias. Há uma seção de registro que registra e relata o uso e as estatísticas do ambiente para um servidor web externo por meio de um script PHP. O aplicativo também pode, opcionalmente, registrar as consultas executadas em um arquivo de registro local.

Também existe um atualizador personalizado que pode verificar e executar uma atualização automática do executável. Consulte a unidade “UpdateCheck” para obter detalhes.

HeidiSQL também possui uma excelente facilidade de exportação, permitindo aos usuários pegar os resultados de suas consultas SQL e exportá-los em todos os tipos de formatos, incluindo o ligeiramente esotérico LaTex e WikiMarkup. É esse tipo de capacidade de executar consultas para extrair os dados, quase independentemente da tecnologia do servidor de banco de dados SQL, mostrá-los em uma visualização amigável, transformá-los e exportá-los para outra coisa que rapidamente tornou o HeidiSQL a ferramenta gerenciadora goto DB para muitos pessoas.

O projeto HeidiSQL aceita doações em sua página oficial aqui: https://www.heidisql.com/donate.php – é definitivamente um projeto Delphi que merece.


O RAD Studio Delphi é a força por trás de alguns dos softwares mais populares do mundo – por que não tentar você mesmo e ver o que ele pode fazer por você?


Delphi Enter the Digital Fan Art and AI Art Contest
Delphi Fan Art Contest

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

IN THE ARTICLES