Resolvi escrever este artigo, depois de ter muito trabalho até descobrir os macetes para escrever um aplicativo complexo multi-plataforma, evitando assim, problemas na transição de plataforma e componentes.
1.Conceito
O que é CLX? CLX é o nome dado pela Borland para suas
bibliotecas de desenvolvimento Cross Platform, basicamente as bibliotecas da Qt
Lib’s disponíveis no Delphi e no Kylix.
Construindo um aplicativo CLX, e tomando os devidos cuidados,
você pode desenvolver um aplicativo totalmente no Delphi, abrí-lo no Kylix e
compilá-lo, gerando um arquivo binário com todas as funcionalidades do programa
feito para plataforma win32, só que, rodando no ambiente Linux.
2.Análise
A. O ambiente de trabalho;
B. O banco de dados;
C. Os componentes;
D. Distribuindo o aplicativo;
E. Rodando o aplicativo;
F. Dicas;
G. Links úteis.
A. O ambiente de trabalho:
O Delphi, a partir da versão 6, e o Kylix 3, em suas versões
Enterprise, são as escolhas corretas. Mas se você quiser passar um pouco de
trabalho extra, o Kylix 3 Open é o Kylix free, só que vem só com os componentes
essenciais (você pode baixar e instalar os componentes freeware do dbexpress,
dos componentes de edição de dados, do indy e para acesso ao seu banco de
dados).
No Windows, a melhor escolha, sem dúvida, é trabalhar no
Windows XP com SP2 formatado com NTFS. É muito mais estável e seguro que as
outras versões.
No linux a coisa fica um pouco complexa por causa da
compatibilidade de versão das bibliotecas. A Borland homologou apenas 3
distribuições do linux: o RedHat 9, o Mandrake 7.2 e o SuSe 8. Na verdade, você
pode escolher qualquer distro, mas se elas não tiverem suporte a pacotes RPM,
você terá problemas. No linux, para começar o trabalho, a melhor escolha é o
RedHat 9. Apesar do Kernel não ser muito novo, ele é seguro, estável e funciona
bem. Na instalação da distro, não esqueça de selecionar os pacotes das libs da
Qt, senão você vai ter que recorrer aos CDs de instalação novamente (note que o
Kylix suporta as versões 2.3 destas libs, que acompanham o RedHat 9. As distros
mais novas, vem com a versão 3.x).
B. O banco de dados:
Pra mim, o mais importante na análise e definição de um
projeto, seja a escolha do banco de dados. Depende muito do escopo da aplicação:
um aplicativo com grande número de acessos a base de dados eu aconselho utilizar
um Gerenciador de Banco de Dados Relacional (GBDR). Temos ótimas opções
gratuitas: o Firebird (que é o Interbase 6), o PostgreSQL (muito parecido com o
Oracle) e o MySQL. Se a necessidade for velocidade, sem muita segurança e sem
construções avançadas como StoredProcedures, o MySQL será uma boa escolha,
principalmente em aplicações para a Web. Agora, se o banco irá gerenciar dados
vitais, o Firebird ou o PostgreSQL serão as melhores escolhas. Particularmente
prefiro o PostgreSQL, porque é um banco muito poderoso com versões para windows,
linux, unix, etc com uma grande equipe de desenvolvimento permanente e com um
grande número de usuários pelo mundo afora, e ainda por cima, tem um dos
melhores softwares de gerenciamento: o pgAdmin, que também é gratuito e
acompanha o pacote de instalação.
C. Os componentes:
C.1. Acesso a dados: Para desenvolvimento em CLX, é melhor
utilizar a tecnologia DBExpress para acesso a dados. Esta tecnologia é muito
poderosa, e não tem a necessidade de instalar o BDE, por exemplo. A partir da
configuração de somente dois arquivos (dbxconnections e dbxdrivers) e a
instalação das respectivas bibliotecas, permite acesso a múltiplos bancos de
dados, tornando suas aplicações poderosas e independentes. O DBExpress permite a
troca de gerenciador de banco de dados, mudando apenas o nome da propriedade
connection do TSQLConnection.
Use sempre um DataModule para colocar seus componentes de
conexão. Se você for utilizar os componentes TSQLClientDataSet ou TClientDataSet,
coloque esta linha no final da cláusula uses da seção interface de seu
DataModule:
{$IFDEF LINUX} ,Midas {$ELSE} , Crtl, MidasLib{$ENDIF};
Esta linha evitará que você tenha de distribuir estas bibliotecas.
Exemplos de diagramas de conexão:

C.2. Para comunicação: Para servidor de
correio, mensagens pela rede, a melhor escolha são os componentes da Indy.
Funcionam bem no ambiente Win32 e no linux, e estão em constante
desenvolvimento.
C.3. Relatórios: Prefiro o componente freeware Fortes Report
da Fortes Informática, por ser muito parecido com o velho conhecido Quick Report.
Para quem estava acostumado com o QReport, a transição para o Fortes é menos
traumática do que para o Rave, e o Fortes tem versões VCL e CLX.
D. Distribuindo o aplicativo:
Win32: Para distribuir seus aplicativos na plataforma win32,
você precisa dos seguintes arquivos:
- O executável de sua aplicação (e suas dll’s se houver);
- Os arquivos dbxconnections.ini e dbxdrivers.ini
configurados corretamente para o acesso ao banco;
- A biblioteca Qtintf.dll (deve ser colocada no diretório
system32);
- As bibliotecas de conexão com o banco de dados (geralmente
são duas Dll que também deverão ficar no system32);
Linux: Para distribuir seus aplicativos na plataforma linux,
você precisa dos seguintes arquivos:
- O binário de sua aplicação (e suas .so se houver);
- Os arquivos dbxconnections e dbxdrivers;
- As bibliotecas do Qt_xx.so (devem estar em /usr/lib ou
listadas no LD_LIBRARY_PATH);
- As bibliotecas de conexão com o banco de dados (geralmente
são duas .so que também deverão ficar em /usr/lib);
E. Rodando o aplicativo:
No Windows, se cumprido o passo D, basta criar um atalho e
executar.
No Linux a brincadeira é um pouco mais complicada. Se o Kylix
já estiver instalado na máquina, beleza. Senão, você deve rodar o comando:
ldd nome_do_aplicativo , na pasta onde está o binário. Ele
listará todas dependências de seu aplicativo. Se alguma não for encontrada,
colocará: ->not found , ao lado da biblioteca não encontrada. Se acontecer, use
o comando: locate , para localizá-la, copie-a para a pasta /usr/lib e rode o
comando: ldconfig , para atualizar o sistema. Depois, o melhor a fazer é criar
um script .ch (ou copiar um existente e modificá-lo (olhe nos links abaixo
página do Rick Ross)) de inicialização para chamar seu aplicativo e dar
permissão de execução para ele, com o comando: chmod 777 nome_do_aplicativo ou
script. Teste a execução com: ./nome_do_script.ch.
F. Dicas:
- Sempre use nomes de arquivos, de campos, de tabelas e banco
de dados em letras minúsculas. Isto facilita muito no linux (que é case
sensitive) e na construção de query’s.
- Antes de compilar seu aplicativo, coloque active:=false nos
TSQLconnections, senão ele procurará os arquivos dbx_.ini na pasta padrão
DbExpress do Delphi e do Kylix.
- Se estiver em uma rede, com o servidor de banco de dados em
outra máquina, coloque loadparamsonconnect:=true nos TSQLconnection.
- Coloque as máscaras de campos na camada do meio. Se você
utilizar a estrutura de conexão tipo (1) coloque as máscaras nos TSQLDataset e
coloque poIncFieldProps:=true nos TDataSetProvider. Isto evita que você tenha q
colocar as máscaras nos TClientDataSet.
- Para ativar toda a estrutura de consulta, coloque active:=true
nos componentes TSQLClientDataSet ou TClientDataSet. Não precisa ativar os
TSQLDataset.
- Nunca esqueça de configurar as propriedades ProviderFlags
dos campos, nos TSQLDataset e nos TClientDataSet para formar corretamente as
query’s de update, delete e insert.
- Coloque um TSQLMonitor conectado ao TSQLConnection com
autosave:=true e filename para um arquivo válido, quando precisar rastrear as
instruções SQL que os componentes estão passando pro banco. Principalmente na
fase de testes.
- Use a herança de formulário: coloque e organize as janelas
com código repetido e os componentes em um formulário que possa ser herdado
pelos outros. Isto economiza memória e trabalho de codificação.
- Use somente imagens de ícones e botões com 16 cores. Quanto
maior a resolução das imagens, mais problemas de erro de Canvas vão pipocar na
sua tela necessitando fechar o programa. Este é um problema nas bibliotecas QT.
- Use as diretivas {$IFDEF LINUX}..{$ELSE}..{$ENDIF} sempre
que precisar de código específico de plataforma.
- Se for utilizar win98, coloque o mínimo possível de imagens
ou migre as estações para linux.
- Lembre-se que o linux não usa extensões para identificar
arquivos e considera diferentes os caracteres maiúsculos e minúsculos.
- O Linux abre um novo e complexo mundo de possibilidades ao
programador Delphi. Hoje em dia, temos muitos softwares livres, principalmente
bancos de dados, que dão conta do recado sem precisar recorrer a grandes
investimentos. Aconselho, na medida do possível, a escolha de softwares livres
com equipes de desenvolvimento permanente.
G. Links úteis:
Fortes Report:
www.fortesinformatica.com.br
PostgreSQL:
www.postgresql.org
Source Forge (componentes free):
http://sourceforge.net
Firebird:
www.firebird.com.br
MySQL: www.mysql.com
Bibliotecas free para Kylix 3 Open:
FreeCLX:
http://sourceforge.net/projects/freeclx
ZeosDatabaseObjects:
http://sourceforge.net/projects/zeoslib
DBControls: procure no google por: dbcontrols.tgz
Vale a pena olhar:
www.vivaolinux.com.br
www.linuxclube.com.br
www.linuxclube.com.br/artigos/index.php?art_id=818&op=ler
www.guiadohardware.net/linux/dicas/38.htm
http://rick-ross.com
Por: Felipe Hertzog Feltes
felipehf@hotmail.com
Analista de sistemas e programador da THC Informática – Porto Alegre.
Programação em Clipper, desde 1992 e Delphi, desde 1998.
Administrador de banco de dados PostgreSQL.
|