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


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