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.
Table of Contents
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.
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.
- Vá para http://www.madshi.net/madExceptDescription.htm
- Baixe e execute o instalador
- 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:
- 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.groupproj
projeto 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.groupproj
e 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:
- Navegue até a
.HeidiSQL
pasta 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.4
e abra o heidisql.dproj
projeto “ ”.
Deve abrir sem erros.
Se você clicar em CTRL+F9
para 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ê?