Delphi Conference Brasil – Resumo

Delphi, Notícias fevereiro 25th, 2010

Terminou agora há pouco a “Delphi Conference Brasil’ que foi transmitida via “live meeting” com apresentações muito interessantes; para quem não conhece e também para quem conhece mas pretende se atualizar ou e aprimorar conhecimento com novas técnicas e recursos.

  • Touch e Gestures” no Delphi (Andreano Lanusse da Embarcadero). O Delphi 2010 oferece agora suporte completo para a criação de aplicações baseadas e “toques” ou e “gestos” (aplicações estilo Iphone por exemplo).
  • “DataSnap” com exemplos (usando webservices,comparação SOAP e REST apresentado por Rodrigo Leonhardt Silva da Polishop). DataSnap com REST é uma nova tecnologia disponível no Delphi que permite acessar dados de um servidor usando JSON (JavaScript Object Notation), dispensa o uso do XML para troca de informação entre aplicações e é muito rápido e fácil de implementar no novo DataSnap do Delphi.
  • Uma apresentação do “ressuscitado” e agora muito melhor “Intraweb” e com boas perspectivas para o futuro (por Jackson Gomes da Atozed). Quem usa o Intraweb e está com idéia de refazer tudo, não deixe de conferir essa nova versão, com os novos “eventos” em AJAX ficou bem mais interessante. O Jackson nos disse que estão trabalhando numa nova versão onde estarão disponibilizando recursos para utilização de frameworks como: JQuery, YUI, Dojo, etc.
  • Boas Práticas OOP (com exemplos focados no Delphi Prism) por Adilson Jr da TDS; nessa apresentação o Adilson dá uma verdadeira aula de como trabalhar com objetos distribuídos.
  • Testes para desenvolvedor Delphi; onde o palestrante Daniel Width; deu uma visão geral dos motivos para aplicação de testes e recursos e softwares disponíveis para testes com o Delphi, exemplificando o uso do Dunit, um plugin para o Firefox algumas opções free e outras comerciais.
  • E, por ultimo, uma excelente apresentação (muito completa) de recursos do Rave Reports por Alan Glei, onde com muita paciência ele demonstrou recursos interessantes e indispensáveis para organizar e estruturar os seus relatórios com Rave;

Clique para continuar lendo “Delphi Conference Brasil – Resumo”

Tags: , , , , ,

Delphi 2010, Problema com “encoding” usando TXMLDocument

Código-Fonte, Dicas Blog, Programação dezembro 17th, 2009

Estava recompilando alguns componentes do meu sistema, desenvolvidos originalmente com o Delphi 7 para o Delphi 2010, e percebi o seguinte erro ao tentar abrir um XML gerado pela aplicação compilada com o D2010 “caractere inválido encontrado no texto“.

Na verdade o XML contêm campos acentuados usando “ISO-8859-1″ e, após algum tempo perdido descobri que o código abaixo, embora estivesse correto não gerava o XML como deveria; ou seja, a propriedade “encoding” simplesmente não é adicionada (como deveria) no cabeçalho do XML. Isso não acontece no Delphi 7, por exemplo.

01 – Codigo que não funciona no Delphi 2010:

Clique para continuar lendo “Delphi 2010, Problema com “encoding” usando TXMLDocument”

Tags: , , ,

Code Rage 4 – mostrou o poder das novas ferramentas

Notícias setembro 13th, 2009

O evento “Code Rage 4″ realizado on-line pela Embarcadero nesses ultimos dias 8-11 de Setembro mostrou definitivamente que a nova suíte de desenvolvimentos baseada no Delphi está simplesmente sensacional!. A Embarcadero investiu pesado em novos controles e recursos e muito, mas.., muito, em integração com outros fornecedores de soluções;

O Delphi engoliu o Visual Studio na versão Delphi Prism; então quem ficava na dúvida se migrava para o VS ou não, agora não precisa mais, já que o ambiente RAD Studio engloba o VS com o Prism.

O desenvolvimento WEB ganhou reforços de todos os lados; o novo DATASNAP muito mais poderoso, o novo INTRAWEB mais flexível contando com recursos AJAX, o Delphi Prism para quem desenvolve em .NET; sem falar no Indy, cada vez mais poderoso.

Duas coisas justificaram de imediato para mim a compra do novo RAD Studio; os novos recursos do DATASNAP e a facilidade de integração com os serviços web disponíveis (pudemos ver um pouco disso na apresentação do Marco Cantú que deu um show! “10 REST Clients in Delphi”).

Sem falar na quantidade de novos recursos disponibilizados através do novo compilador, que inaugura novas formas de escrever código, código mais poderoso e eficiente  (muita coisa nova para aprender). Eu diria que é material para mais 10 anos de trabalho e aprendizagem.

Tags: , ,

Distribuição da NF-e autorizada para o Destinatário (Parte II)

Código-Fonte janeiro 26th, 2009

Vimos no artigo anterior como gerar o arquivo da NF-e compartilhada à partir do XML da NF-e assinada e do XML do protocolo de autorização da NF-e. Nesse artigo vamos demonstrar o uso do componente Indy do Delphi para enviar o arquivo da NF-e compartilhada via E-mail; complentando-se assim, o processo de compartilhamento da NF-e com o destinatário:

Vamos partir do código anterior e implementar os recursos de envio do e-mail para o destinatário. Nesse exemplo, fazemos uso do componente Indy também disponível nas distribuições do Delphi.

Adicione os seguintes componentes no seu programa: idSMTP e idMessage; em seguida escreva o código abaixo:

Código-fonte para comandar o envio do e-mail da NF-e compartilhada para o destinatário:

begin
    // configura servidor smtp
    idSMTP1.Host := 'smtp.empresaxyz.com.br';
    idSMTP1.Username := 'controlenfe@empresaxyz.com.br';
    idSMTP1.Password := 'xxxxxxxx';
 
    // configurando mensagem
    // e-mail da sua loja
    idmessage1.ContentType := 'text/html';
    idmessage1.from.address := 'controlenfe@empresazyz.com.br';
    // e-mail destinatario
    idmessage1.recipients.emailaddresses := 'contato@empresaxyz.com.br';
    // Assunto (titulo E-mail)
    idmessage1.subject := 'Empresa XYZ (Envio automático NF-e) '+DateTimeToStr(now);
 
    // Corpo da Mensagem (use aqui um HTML ou texto que deseja enviar
    // juntamente com a mensagem.
    idmessage1.body.Add(
    'Prezado Cliente,'+
    'Obrigado por comprar na Empresa XYZ. Estamos encaminhando esse e-mail contendo'+
    ' em anexo, o arquivo eletrônico da sua Nota Fiscal de Compra; de acordo com '+
    ' o "Manual de Integração do Contribuinte" da Nota Fiscal Eletrônica. '+
    'Sds,'+
    'A administração!'+
    '
'+
    'PS. Caso tenha alguma dúvida favor entrar em contato conosco '+
    'pelos fones: xx xxx xxxxx ou E-mail: xxxxxx@xxxxx.xx.x'+
    ';
'+
    '<strong>Favor não responder!</strong>. Esse e-mail foi enviado automáticamente pelo'+
    ' nosso servidor após registro da autorização de uso da NF-e para a vossa '+
    'Empresa.'
    );
    // ou carregue uma mensagem pré-definida em um arquivo
    //idmessage1.Body.LoadFromFile('mensageNFe_destinatario.html');
 
    // anexa o XML da NFe compartillhada no e-mail
    TIdAttachment.create(idmessage1.MessageParts,
    TFileName('c:\nfe_arquivos\compartilhadas\procNFE.xml'));
 
    // conecta com o servidor SMTP
    idSMTP1.connect;
    try
    // Envia o e-mail
    idSMTP1.send(idmessage1);
    finally
        idSMTP1.Disconnect;
    end;
end;

Com isso concluímos o artigo sobre a Nota Fiscal Eletrônica Compartilhada, na primeira parte (parte I) geramos o arquivo da NF-e compartilhada à partir dos arquivos XML da NF-e assinada e do XML do recibo de autorização da NF-e. Nesse ultimo artigo vimos como enviar esse arquivo via e-mail para o destinatário.

Espero que essas informações sejam úteis para vcs e que eliminem com isso, algumas horas de pesquisa e trabalho.

Tags: , , , ,

Consulta CEP com Webbroker e JavaScript

Código-Fonte, Delphi, JavaScript, Novidades, Sem categoria dezembro 24th, 2008

Uma das funções mais interessantes hoje em qualquer tipo de cadastro que contenha endereço postal é a busca pelo CEP, para obter o endereço, bairro, cidade e estado; muitos desenvolvedores mantém uma base de dados do CEP local (em cada cliente) para que possa ser usada pela aplicação durante a edição dos endereços no cadastro.

O “buscarcep.com.br” é um WebService de consulta de CEP gratuíto e foi usado nesse exemplo. Esse serviço pode facilitar a vida de muita gente, já que usando o serviço, não mais será necessário manter uma base de dados do CEP local (em cada cliente).

Abaixo dou um exemplo de como implementar isso em uma aplicação WEB usando Delphi Webbroker e Javascript (para dar um toque Web 2.0 na aplicação).

Clique para continuar lendo “Consulta CEP com Webbroker e JavaScript”

Tags: , , ,

Delphi Prism disponível para Download em Breve

Notícias outubro 29th, 2008

A versão para avaliação do mais novo lançamento da Embarcadero o “Delphi Prism” estará disponível em breve para download no site da CodeGear. Para quem não ainda não sabe essa é a próxima versão do Delphi (não contempla mais a VCL).

Clique para continuar lendo “Delphi Prism disponível para Download em Breve”

Tags: , , ,

Lendo o XML com o TXMLDocument

Código-Fonte, Delphi outubro 20th, 2008

Algumas pessoas têm me procurado com muitas dúvidas sobre gerar um arquivo XML; mas, ultimamente, principalmente, como fazer para ler os dados de um XML. Já mostrei como fazer isso usando o utilitário que acompanha o Delphi “XML Mapper”; o qual uso muito (veja o post) quando preciso integrar um arquivo XML com meu sistema de forma definitiva.

Outra forma de executar a leitura parcial ou total de um arquivo XML é usando o componente TXMLDocument; com ele vc. pode buscar facilmente a informação que vc precisa dentro do arquivo; no código exemplo, que disponibilizo abaixo: vamos ler os itens do arquivo exemplo gerado no post “Dados XML como começar” (poderia ser usado para ler os itens da sua NF-e com pequenos ajustes):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
procedure TForm1.Button32Click(Sender: TObject);
var vXMLDoc: TXMLDocument;
    NodePai,NodeSec,NodeTmp: IXMLNode;
    nome, codigo: WideString;
begin
  // Cria a variável baseada no TXMLDocument
  vXMLDoc := TXMLDocument.Create(self);
 
  // Le conteúdo do arquivo XML informado 
  vXMLDoc.LoadFromFile('EnviNFe.xml');
  // Poderia ser uma URL como abaixo:
  //vXMLDoc.FileName := 'http://www.caiooliveira.com.br/?feed=rss2';
  //vXMLDoc.Active := True;
 
  // Vou colocar os dados no memo apenas como exemplo
  Memo.lines.Add( '-------------------------------------------------');
  Memo.lines.Add( 'Vamos inserir num campo memo (apenas para ver o resultado do teste');
  Memo.lines.Add( VXMLDoc.XML.Text +#13+#13 );
 
  // Aqui eu peço para encontrar a primeira ocorrencia da Tag <det>>
  NodePai := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode('det');
  // Esse nó vai ser usado no LOOP
  NodeSec := NodePai;
  // Posiciona o primeiro elemento encontrado
  NodeSec.ChildNodes.First;
  repeat
    // referencia a tag <prod> dentro de <det>
    NodeTmp  := NodeSec.ChildNodes['prod'];
    // da pra ver que é um XML resumido da NFe (so temos uma tag <prod> para cada <det> então não precisaria da linha abaixo
    // agora se tivéssemos mais de uma seria o caso de posicionar também na primeira ocorrencia.
    NodeTmp.ChildNodes.First;
    repeat
      // pega os dados que vc quiser dentro da tag <prod>
      nome := NodeTmp.ChildNodes['cProd'].text;     // posso ler assim
      codigo := NodeTmp.ChildValues['cEan'];        // ou assim
 
      // vamos inserir no Memo os dados
      Memo4.Lines.Add('-----------------------------------------------');
      Memo4.Lines.Add( nome+' ---- '+codigo );
 
      // vai para a proxima ocorrência </prod><prod> (se houvesse)
      NodeTmp := NodeTmp.NextSibling;
    until NodeTmp = nil;
    // vai para a proxima ocorrência <det>
    NodeSec := NodeSec.NextSibling;
  until NodeSec = nil;
end;
</det></prod></det></prod></det></prod></det>

Tags: ,

Delphi 7 x Intraweb x Apache 2.2

Delphi, Informação, Sem categoria outubro 3rd, 2008

Bom, após um experiência terrível migrando o meu ambiente de desenvolvimento do XP para o Windows Vista; devido à minha nova máquina,  onde fui forçado a atualizar a minha versão de desenvolvimento do Apache 1.3 para o Apache 2.x, pois, não consegui fazer o Apache 1.3 rodar com o Windows Vista.  Caso queira detalhes da instalação do Apache no Vista veja o artigo anterior.

Clique para continuar lendo “Delphi 7 x Intraweb x Apache 2.2″

Tags: , , ,

Dados x XML, como começar?

Código-Fonte, Delphi julho 31st, 2008

Segue abaixo um exemplo, usando a classe TXMLDocument do Delphi, para gerar um arquivo XML; repare que o arquivo está incompleto, mas servirá como base para quem não sabe ainda por onde começar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
procedure TfrmPrincipal.PnLerNfeClick(Sender: TObject);
var vXMLDoc: TXMLDocument;
    NodeNivelA, NodeNivelB: IXMLNode;
 
begin
 
  vXMLDoc := TXMLDocument.Create(self);
  Try
  With vXMLDoc do begin
       Active := True;
       Version := '1.0';
       Encoding := 'UTF-8';
       AddChild('NFe','http://www.portalfiscal.inf.br/nfe');
       DocumentElement.Attributes['xmlns:ds'] :=
       'http://www.w3.org/2000/09/xmldsig#';
       DocumentElement.Attributes['xmlns:xsi'] :=
       'http://www.w3.org/2001/XMLSchema-instance';
       DocumentElement.Attributes['xsi:schemaLocation'] :=
       'http://www.portalfiscal.inf.br/nfe/enviNFe_v1.12.xsd';
 
       // A - Dados da Nota Fiscal eletrônica
       NodeNivelA := DocumentElement;
       // Adiciona a Tag
       NodeNivelA.AddChild('infNFe');
       // Adiciona atributo "Id" da Tag anterior
       NodeNivelA.ChildNodes['infNFe'].Attributes['Id'] := 'NFe31232131232132131231221312312312';
       // Adiciona atributo "versao" da Tag anterior
       NodeNivelA.ChildNodes['infNFe'].Attributes['versao'] :=
            DM.ClientDSLoja.FieldByName('enviNFe').AsString;
 
       // B - Identificação da Nota Fiscal eletrônica
       NodeNivelB := NodeNivelA.ChildNodes['infNFe'];
       NodeNivelB.ChildNodes['ide'].AddChild('cUF').NodeValue := '51' ;
       NodeNivelB.ChildNodes['ide'].AddChild('cNF').NodeValue := '000001';
 
       vXMLDoc.SaveToFile('EnviNFe.xml');
 
  end;
  finally
     vXMLDoc.Free;
  end;
 
end;

Ps. Acrescente as units: XMLDoc, XMLIntf, xmldom.

Tags: , ,

CJV Código de Barras

Delphi maio 26th, 2008

CJV Barcode. Um componente free e eficiente para quem precisa incorporar impressão de código de barras em seus aplicativos Delphi (impressão do DANFE da NF-e, por exemplo), Asp ou PHP; compatível com o QuickReport. Esse componente foi criado pelo brasileiro Cirilo José Veloso. A instalação é simples; descompacte o arquivo .ZIP na pasta “lib” do Delphi e siga as instruções contidas no arquivo “leiame.txt”.

Visite o site do autor e conheça outros componentes interessantes para programadores: Delphi, Asp e PHP. Eu usei e recomendo.

Tags: , , , , ,