Ícone do site Embarcadero RAD Studio, Delphi, & C++Builder Blogs

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.

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

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!)

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

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

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:

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

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:

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

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.

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:

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

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ê?

Sair da versão mobile