procedure TFrmPrincipal.ConexaoBeforeConnect(Sender: TObject);
var f:TextFile;
h,p,base:String;
begin
// Verifica se o arquivo com
// host do db existe
AssignFile(f,'conexao.ini');
if not FileExists('conexao.ini') then
begin
{ Se o arquivo de configuração não existir, o
sistema vai criá-lo com o servidor 192.168.0.1,
porta 5432-porta padrão do PostgreSQL e com o banco
chamado database1
}
try
Rewrite(f);
WriteLn(f,'host=192.168.0.1');
WriteLn(f,'porta=5432');
WriteLn(f,'base=database1');
finally
CloseFile(f);
end;
end;
try
Reset(f); // Abre o arquivo
{ Aqui o sistema está lendo linha por linha,
a primeira linha fica o hostname ou ip do servidor,
na segunda a porta e na última o nome da base.
No arquivo esses dados têm que estar exatamente
nesta ordem.
O nome do meu componente de conexão é "Conexao"
e estou usando o Zeos.
Outra coisa importante, os dados são lidos
considerando que estão na posição de coluna
correta, ex.: o host na coluna 6
}
Readln(f, h);
Conexao.HostName:=Copy(h,6,Length(h)-5);
Readln(f, p);
Conexao.Port:=StrToInt(Copy(p,7,Length(p)-6));
Readln(f, base);
Conexao.Database:=Copy(base,6,Length(base)-5);
CloseFile(f);
except
on e: Exception do
begin
{ Caso não consiga abrir o arquivo, dá a mensagem
de erro e fecha o sistema}
ShowMessage('Erro ao abrir arquivo de '+
'configuração. Erro:'+#10+#13+
e.Message);
Application.Terminate;
end;
end;
end;
quarta-feira, 8 de setembro de 2010
Lendo Configurações de Conexão a Partir de Arquivo Texto
quarta-feira, 31 de março de 2010
Lendo uma NFE - Nota Fiscal Eletrônica (XML) no Delphi 2006.
Agora com a demanda de arquivos XML rodando por aí, seja na área fiscal, contábil, e até na área de saúde, ter uma opção para abrir e mapear arquivos XML é imprescindível.
Eu vou mostrar como mapear e abrir um XML no Delphi como se fosse um DataSet. Ou seja, você poderá navegar no arquivo, ver ele em DBEdit e
O Delphi 2006, e posteriores (não sei exatamente em que versão saiu) possui uma ferramenta chamada XML Mapper, que fica em Tools / XML Mapper.Veja na imagem:

Clique na opção File / Open e abra um arquivo XML, no meu caso abri uma nota fiscal eletrônica. A estrutura do XML vai aparecer no lado esquerdo, clique com o botão direito em algum elemento do XML e use a opção Select All. No grid do meio vão aparecer os elementos do XML. Depois no menu, vá na opção Create / Datapacket from XML. Isso irá preencher o lado direito com as tags do XML e seus respectivos tipos.
Clique no botão “Create and Test Transformation”. O programa abrirá uma DBGrid, com os dados do arquivo XML, tendo como campos as Tags. Isso dá uma prévia do que teremos como resultado final. Feche a tela de teste e clique com o botão direito na tela do meio, e use a opção “Save Transformation”. Isso vai gerar um arquivo XTR, que funciona como um “mapa” para o Delphi abrir um XML como dados.
Para finalizar, vamos fazer isso funcionar. Crie um novo projeto no Delphi, e adicione ao Form1, um TDataSource, um TClientDataSet, um TXMLTransformProvider e um TDBGrid para vermos os dados. Na propriedade DataSet do DataSource1, coloque o ClientDataSet1. Na propriedade ProviderName do ClientDataSet1, coloque XMLTransformProvider1. Na propriedade DataSource do DBGrid1, coloque DataSource1. Clique no + da propriedade TransformRead, do XMLTransformProvider1, e depois em TransformationFile, escolha o arquivo XTR que você criou anteriormente. E em XMLDataFile escolha um arquivo XML, que no casso desse exemplo é uma nota eletrônica. No ClientDataSet mude Active para True e os dados devem aparecer no grid, conforme a figura.
Concluindo, existe uma facilidade muito grande em se trabalhar com arquivos XML no Delphi. E isso vai se tornando cada vez mais útil visto o aumento de uso desse tipo de comunicação.
sexta-feira, 26 de março de 2010
Delphi e Lazarus
O Lazarus surgiu como uma esperança para isso, porém lá no começo, onde não tinha quase nada de componentes, a IDE completamente instável, era totalmente impossível fazer qualquer programa no Lazarus, a não ser que fosse muito simples. De tempos em tempos me lembro do Lazarus e baixo ele para ver como está e vejo que está em constante evolução.
Ontem baixei o Lazarus e vi que está bem mais estável, a IDE entra rápido e tem uma gama de componentes considerável. A comparação com o Delphi é inevitável. Eu uso o Delphi 2006, mas eu teria que comparar o Lazarus com o Delphi 5 ou 6, pelo número de recursos. Uma coisa que ainda me chateia no Lazarus desde o começo é o fato dos executáveis ficarem gigantes. Um form mais um grid e conexão com firebird fizeram um executável de 21MB. Enquanto isso no Delphi, mesmo sendo 2006, normalmente não chega a 1MB.
Um ponto muito importante me chamou a atenção no Lazarus, que não tinha antes: herança visual. Isso era uma das coisas mais importantes que me impedia de migrar para o Lazarus. Apesar de tudo, me decepcionei quando vi que a herança não chega a ser igual a do Delphi, um form herdado, até fica com o mesmo visual e componentes do seu antecessor, mas se você muda algo na IDE, não altera direto no form filho. Depois que fechei o projeto e abri novamente aí sim foi efetivada a alteração.
Concluindo, achei o Lazarus muito mais maduro do que um dia já foi, mas ainda vou ter que continuar com o meu Delphi, um dia espero que possa pegar todos os meus projetos Delphi e compilá-los no Lazarus sem complicações. Mas esse é o meu caso em específico, pra quem vai começar um projeto do zero, acredito que seja uma ótima idéia avaliar com carinho essa ótima ferramenta de desenvolvimento que é o Lazarus!


