Artigos Relacionados no Blog

Dicas Blog outubro 31st, 2008

Essa semana, revendo os artigos publicados no Blog, percebi que estava ficando difícil localizar alguns tópicos (mesmo porque normalmente não lembramos o título para fazer a pesquisa mais exata) e, então implementei um “plugin” muito legal onde os posts (publicações) relacionadas (através de palavras chave) são citados no rodapé do post que você estiver lendo; assim, acredito, fica mais tranquila a navegação.

Clique para continuar lendo “Artigos Relacionados no Blog”

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: ,

Dados x XML, como começar? (segunda parte)

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

Essa segunda parte do tópico “Dados x XML como começar” foi criada para atender à uma demanda de usuários que têm postado dúvida para gerar o LOOP para criar os itens no XML da NF-e e, acredito que com com esses dados em mãos vai ficar mais fácil para quem está iniciando agora; segue então, o código da versão anterior com o exemplo da implementação para gerar os itens:

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
49
50
51
52
53
54
55
56
57
58
59
60
procedure TfrmPrincipal.PnLerNfeClick(Sender: TObject);
var vXMLDoc: TXMLDocument;
    NodeNivelA, NodeNivelB, NodeNivelC, NodeNivelD: IXMLNode;
    nItens : integer;
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'] :=
            '1.10';
 
       // 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';
 
       // Exemplo Adiciona Itens
       For nItens := 1 to 2 do
       begin
         // adiciona tag <det> com attributo
         NodeNivelC := NodeNivelB.AddChild('det');
         NodeNivelB.ChildNodes.Last.Attributes['nitem'] := IntToStr(nItens);
 
         // adiciona tag <prod> à partir da tag <det>
         NodeNivelD := NodeNivelC.ChildNodes['prod'];
         NodeNivelD.AddChild('cProd').Nodevalue := IntToStr(nItens)+'121231111';
         NodeNivelD.AddChild('cEan').Nodevalue := '7891133005801';
         NodeNivelD.AddChild('xProd').Nodevalue := 'ABRACADEIRA C/PREGO FMX  6 BR - 580';
         NodeNivelD.AddChild('CFOP').Nodevalue := '5102';
         // .....
       end;
 
       //Memo4.Text := vXMLDoc.Encoding;
       vXMLDoc.SaveToFile('EnviNFe.xml');
       Memo4.Lines.LoadFromFile('EnviNFe.xml');
  end;
  finally
     vXMLDoc.Free;
  end;
end;
</det></prod></det>

Tags: ,

Firebird x Crise EUA

Banco de Dados, Informação outubro 13th, 2008

Numa discussão recente entre os membros responsáveis pelo projeto do banco de dados Firebird, seus associados e colabores; foi apontado que a crise americana está afetando terrivelmente as economias (o fundo de reservas) do projeto Firebird; esse fundo é usado principalmente, para pagar os desenvolvedores que trabalham “full time” no projeto entre outros que recebem por horas trabalhadas. O fundo já não era grande coisa, com a crise e a conseqüente valorização do Dólar, está previsto faltar dinheiro para realizar os pagamentos.

Se você é usuário do Firebird e não contribui ainda está na hora de participar (o valor é pequeno mas o resultado, como já sabemos é grande!). Veja mais detalhes no Blog do Carlos Cantú; o maior apoiador do projeto FB no Brasil.

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: , , ,

Apache 2.x no Windows Vista

Informação outubro 3rd, 2008

Recentemente troquei meu computador (note) por uma versão mais nova, com o Win Vista, hummm… No começo foi dureza, muita pesquisa e ajuste para que pudesse começar a trabalhar pra valer. Abaixo segue uma das minhas experiências mais chatas com o vista.

Após várias tentativas de colocar o Apache rodando no vista, corri atrás de informações na WEB e encotrei um passo a passo do “Simom Whatley” que foi bastante útil para mim. Clique no link abaixo para abrir o artigo dele; abaixo vou traduzir o processo, que na verdade é simples, mas tem que ser seguido à risca.

Clique para continuar lendo “Apache 2.x no Windows Vista”

Tags: ,