rodrigo biagioli Postado Junho 12, 2007 Denunciar Share Postado Junho 12, 2007 estou com o seguinte problematenho uma aplicação VCL que executa um programa externo DOS usando WINEXEC, ou o SHELLEXECUTE;tenho também outra aplicação parecida com a tal porem em CLX e preciso executar o mesmo programa em DOS,mas não posso usar a biblioteca WINDOWS.não acho nenhuma função que faça tal serviço no CLX;alguém pode me ajudar??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Felipe -- Postado Junho 12, 2007 Denunciar Share Postado Junho 12, 2007 estou com o seguinte problematenho uma aplicação VCL que executa um programa externo DOS usando WINEXEC, ou o SHELLEXECUTE;tenho também outra aplicação parecida com a tal porem em CLX e preciso executar o mesmo programa em DOS,mas não posso usar a biblioteca WINDOWS.não acho nenhuma função que faça tal serviço no CLX;alguém pode me ajudar???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áliseA. 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 que 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.orgSource Forge (componentes free): http://sourceforge.netFirebird: www.firebird.com.brMySQL: 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rodrigo biagioli
estou com o seguinte problema
tenho uma aplicação VCL que executa um programa externo DOS usando WINEXEC, ou o SHELLEXECUTE;
tenho também outra aplicação parecida com a tal porem em CLX e preciso executar o mesmo programa em DOS,
mas não posso usar a biblioteca WINDOWS.
não acho nenhuma função que faça tal serviço no CLX;
alguém pode me ajudar???
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.