Jump to content

everson.turossi

Membros
  • Content Count

    164
  • Joined

  • Last visited

Community Reputation

74 Excellent

1 Follower

About everson.turossi

  • Rank
    Membro
  • Birthday 02/03/1984

Profile Information

  • Sexo
    Masculino
  • Localização
    Chapecó

Recent Profile Visitors

1,013 profile views
  1. Deve estar com uma versão antiga da Midas.dll em algum lugar
  2. Fiz alguns testes e é isso mesmo. Aqui também utilizo os componentes em runtime. O jeito vai ser criar no momento uma rotina pra excluir os arquivos gerados, e pelo que percebi, a pasta final muda de PC para PC. Aqui os arquivos são gerados na pasta C:\Users\MeuUsuario\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-1848721904-2759955265-3548017548-1001
  3. Havia respondido isso em outro tópico, mas resolvi remover de lá e trazer para o local correto caso alguém venha ter o mesmo problema na hora de baixar arquivos via https. Internamente o componente TACBrDownload utiliza as classes da Synapse para baixar arquivos e eu também tive problemas na hora de baixar arquivos usando HTTPS usando o Demo disponibilizado no repositório. Pesquisando na internet encontrei um exemplo funcional usando a classe THTTPSend da Synapse que é exatamente a mesma usada no TACBrDownload. Toda via usando o Demo não baixava o arquivo, o mais estranho é que ambos usavam o comando HTTP.HTTPMethod('GET', Url); Comecei a depurar em paralelo para tentar identificar em que momento ocorria a divergência, até que cheguei procedure TTCPBlockSocket.SSLDoConnect da unit blcksock. Quando executava a condição if not FSSL.Connect then o Demo do ACBrDownload ia para a classe TCustomSSL e o exemplo que encontrei na internet (aquele que funcionou) ia para a classe TSSLOpenSSL. Então fui buscar onde o objeto FSSL era criado e o caminho foi o seguinte: constructor THTTPSend.Create >> FSock := TTCPBlockSocket.Create; >> constructor TTCPBlockSocket.Create; >> CreateWithSSL(SSLImplementation); >> constructor TTCPBlockSocket.CreateWithSSL(SSLPlugin: TSSLClass); >> FSSL := SSLPlugin.Create(self); O responsável pelo tipo de objeto a ser criado no FSSL (TCustomSSL/TSSLOpenSSL) é o SSLImplementation que é uma variável global da unit blcksock que é setado inicialmente como TSSLNone. Fiz uma busca em todos os fontes e os únicos lugares aonde essa variável tem seu valor alterado é no initialization de algumas classes, sendo setado como TSSLOpenSSL no initialization da unit ssl_openssl. Verifiquei que no Demo do componente TACBrDownload não existia referencia a unit ssl_openssl, porém no outro exemplo lá estava ela. Ou seja, sempre que dar uses na unit ssl_openssl ou utilizar qualquer outra unit que tenha referenciada para a mesma , a variável SSLImplementation será setada para TSSLOpenSSL. Classes conhecidas que tem a unit ssl_openssl adicionada e sem restrição de diretivas de compilação: ACBrDFeHttpOpenSSL, ACBrMail e ACBrSocket. Em resumo: se for utilizar o componente TACBrDownload ou utilizar direto o THTTPSend para baixar arquivos via HTTPS tem que dar um uses na unit ssl_openssl.
  4. Existe alguma instabilidade nas rotas ou pode ser até mesmo em algum servidor do Sefaz Virtual do RS. Toda via, fazendo testes usando OpenSSL não resultou erros. Usando Wincrypt tem horas que vai, dai para, ai vai denovo, para e assim por diante.
  5. Bom dia, me referia a remover o ACBr do XE6 e instalar no XE6 usando o ACBrInstall, pois dessa forma ele vai gerar as bpl´s no diretório no qual está fazendo a instalação do ACBr
  6. Já tive o mesmo problema quando fazia a instalação manual dos pacotes sem utilizar o ACBrInstall. Até onde lembre, um dos diretórios usados pelo Delphi para carregar os bpl´s estava sendo compartilhado por ambas as instalações do Delphi. Quando compila ele estava pegando do diretório destinado a guardar os bpl´s daquela versão, mas quando fechava o delphi e ia abrir, ele acaba pegando do diretório da versão antiga do Delphi. Tenta fazer o seguinte, remove do XE6 e faz usando o ACBrInstall, então no Community faz a instalação manual, já que versões Trial ou Starter/Community não possuem o compilador por linha de comando e consequentemente não será possível compilar usando o ACBrInstall
  7. A opção "nativa" seria o Fast, mas não estou lembrado a partir de qual versão se tornou a ferramenta de relatório padrão no Delphi e também tem a questão das versões. Como já não a possui, instala o Fortes que não tem galho.
  8. Aqui faço da seguinte forma, deixo livre para digitação todos os campos e valido na gravação se a tag e grupo digitados permitem correção. Quanto as tags que podem ser corrigidas, ai eu tenho um menu de acesso rápido onde o usuário seleciona uma das opções a ser corrigidas e então é completado o grupo e a tag. Não vi a necessidade de criar uma rotina com todas as tags existentes pois as correções a serem feitas na maioria dos casos ficam limitadas a 4 ou 5 tags como por exemplo a CFOP.
  9. ACBrCTe.Conhecimentos.Clear; ACBrCTe.Conhecimentos.LoadFromString(VariavelStringComXML); ACBrCTe.Conhecimentos.Imprimir;
  10. Já tive a mesma necessidade para NF-e onde precisava que várias DANFEs fossem anexadas a um único PDF. Acabei utilizando a dll gsdll32.dll do GhostScript que é capaz de manipular PDFs e inclusive mesclar vários arquivos em um único arquivo. Se não conseguir de outra forma, da um toque que anexo aqui as units.
  11. O modelo da impressora está configurado corretamente? ACBrNFeDANFeESCPOS1.PosPrinter.Modelo := ppEscPosEpson;
  12. Até seria uma possibilidade, mas pra ter acesso a método/propriedade privados só é possível caso o objeto pai e filho estejam na mesma Unit (privados da cláusula private, usando strict private ai só o próprio objeto tem acesso). Neste caso o método teria que estar declarado na cláusula protected onde um método não tem acesso publico mas os objetos que herdarem deste objeto conseguem ter acesso. Porém ClassHelpers trazem uma enorme facilidade de uso, uma vez que é possível adicionar métodos a qualquer classe existente sem a necessidade de criar uma classe herdando de outra. Vou exemplificar: no componente TACBrNFe existe a property NotasFiscais do tipo TNotasFiscais no qual eu necessito a implementação de um novo método e não posso alterar a classe original (poderia ser uma classe nativa do Delphi para facilitar o entendimento). Até poderia estender este objeto e utilizar utilizando Cast ter acesso ao método, mas achei mais interessante criar um ClassHelper para isso uma vez que o próprio Delphi tem utilizado ClassHelpers nas versões mais recentes para fazer aquelas conversões de tipos (MinhaVariavelString := MinhaVariavelInteira.toString;). Vou anexar aqui meus Helpers para ter uma ideia do que estou implementando. UACBr.ProntaEntrega.Boleto.Helper.pas UACBr.ProntaEntrega.NFe.Helper.pas
  13. Utilizo ACBr para a impressão de Danfes e Boletos e tenho a necessidade de Gerar em outros formatos os quais não estão disponíveis. A algum tempo atrás até criei um post com as alterações necessárias o qual não foi aceito pois os recursos que necessito estão disponíveis apenas para Fast. Então para que seja possível exportar os relatórios em outros formatos, toda vez que atualizo os fontes tenho que alterar o código fonte do ACBr com as implementações necessárias o que é um pouco trabalhoso. Através de ClassHelpers consegui fazer a implementação para exportar Boleto e Danfe em outros formatos, porém para que isso seja possível, necessito que alguns métodos e propertys estejam públicos. No Boleto em Fast a function PreparaRelatorio está privada, já no Danfe em Fast a function que faz esse trabalho já está definida como pública. Na unit ACBrNFeNotasFiscais necessito acesso a procedure VerificarDANFE. No Danfe em Fast o dmDanfe está definido apenas como variável, sem uma propriedade para acesso público a ela, já no Boleto esse mesmo datamodule possui uma property para acesso público. Estou anexando aqui as units alteradas condizentes com o componente em questão para análise, mas vou criar um post em cada um dos fóruns, pois sei que os responsáveis por esses dois componentes são pessoas diferentes. ACBrNFeNotasFiscais.pas ACBrNFeDANFEFR.pas
  14. Utilizo ACBr para a impressão de Danfes e Boletos e tenho a necessidade de Gerar em outros formatos os quais não estão disponíveis. A algum tempo atrás até criei um post com as alterações necessárias o qual não foi aceito pois os recursos que necessito estão disponíveis apenas para Fast. Então para que seja possível exportar os relatórios em outros formatos, toda vez que atualizo os fontes tenho que alterar o código fonte do ACBr com as implementações necessárias o que é um pouco trabalhoso. Através de ClassHelpers consegui fazer a implementação para exportar Boleto e Danfe em outros formatos, porém para que isso seja possível, necessito que alguns métodos e propertys estejam públicos. No Boleto em Fast a function PreparaRelatorio está privada, já no Danfe em Fast a function que faz esse trabalho já está definida como pública. Na unit ACBrNFeNotasFiscais necessito acesso a procedure VerificarDANFE. No Danfe em Fast o dmDanfe está definido apenas como variável, sem uma propriedade para acesso público a ela, já no Boleto esse mesmo datamodule possui uma property para acesso público. Estou anexando aqui as units alteradas condizentes com o componente em questão para análise, mas vou criar um post em cada um dos fóruns, pois sei que os responsáveis por esses dois componentes são pessoas diferentes. ACBrBoletoFCFR.pas
×
×
  • Create New...