Ir para conteúdo
  • Cadastre-se

Silva José

Membros
  • Total de ítens

    6
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Silva José's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

2

Reputação

  1. Show, Funcionou corretamente!
  2. No prg acima coloquei uma instrução para teste e esqueci de retirar, method IncluirTitulos(), hResult := 0. METHOD IncluirTitulos(eArquivoIni, eTpSaida) CLASS ACBrBoleto local hResult, buffer, bufferLen bufferLen := STR_LEN buffer := Space(bufferLen) hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_IncluirTitulos", hb_StrToUTF8(eArquivoIni), hb_StrToUTF8(eTpSaida), @buffer, @bufferLen) ::CheckResult(hResult) //hResult := 0 //não existe RETURN ::ProcessResult(buffer, bufferLen) ok
  3. Sim, na Classe ACBrBoleto, o Método :New(), resolve mas o o método :SetDiretorioArquivo(eDir, eArq) não, porque precisa de intervenção no arquivo ACBrBoleto32.dll (DllCall), para descobrir a causa do travamento, a alteração esta postada acima! Aproveitando o Método :ConfigGravar(eArq) também não funciona, e o problema também esta na DLL. Interessante que Log registra que tudo correu sem problemas. kkk . vaje log abaixo Obs: Testei com e sem a path do arquivo de destino. 22/10/19 08:53:42:519 - TLibBoletoConfig.Gravar: c:\correio\log\Zeka.ini //registra que criou mas não cria o arquivo 22/10/19 08:53:42:532 - TLibBoletoConfig.Gravar - Feito Sugestão: Sugiro verificar na DLL o método :ConfigLer(), Porque ele grava o arquivo corretamente, porém pelo nome deveria apenas ler. Segue o arquivo alterado, mas precisa ajustar a DLL. JMSilva ACBrBoleto.prg
  4. Olá com base nas informações acima, consegui gerar um boleto de teste pela ACBr, porém só foi possível na opção Imprimir, as opções de GerarHTML e GerarPDF estão com problemas, possivelmente causado pelo método SetDiretorioArquivo. Encontrei dois Bugs, que gostaria que fosse analisado pela equipe técnica ACBr: Primeiro: METHOD New(eArqConfig, eChaveCrypt) CLASS ACBrBoleto local hResult, buffer, bufferLen, oErr ::hHandle := DllLoad(ACBrLIB) if Empty(::hHandle) // = nil oErr := ErrorNew() oErr:Severity := ES_ERROR oErr:Description := "Erro a carregar a dll [" + ACBrLIB + "]" Throw(oErr) endif hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt)) ::CheckResult(hResult) RETURN Self Este erro só acontece se não encontrar a DLL, o retorno da variável e um valor nulo mas não é "nil" , por isso acredito que uso da função EMPTY() se faz necessária ao invés de if ::hHandle = nil Segundo: METHOD SetDiretorioArquivo(eDir, eArq) CLASS ACBrBoleto local hResult, buffer, bufferLen bufferLen := STR_LEN buffer := Space(bufferLen) hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_SetDiretorioArquivo", @buffer, @bufferLen) ::CheckResult(hResult) RETURN ::ProcessResult(buffer, bufferLen) Observa-se que este método recebe Diretório e nome do arquivo, eDir e eArq respectivamente, porém é ignorado pelo método causa erro -6 e travamento da aplicação Acredito que certo seria, hResult := DllCall(::hHandle, DLL_OSAPI, "Boleto_SetDiretorioArquivo", hb_StrToUTF8(eDir), hb_StrToUTF8(eArq)) //@buffer, @bufferLen) Desta forma resolve o erro, mas nos métodos GravaHTML() e GravaPDF() TRAVA A APLICAÇÃO, Veja os arquivos anexo. att José M. Silva ACBrLibBoleto-20191021A.log ACBrLibBoleto-20191021.log
  5. Seguem os arquivos.... bol1.ini ACBrLibBoleto-20191021.log ACBrLib.ini
  6. Olá estou fazendo um teste para gerar uma html de boletos, apresenta a seguinte mensagem: "|Error /0 Nome do cedente não informado (Quit) | |Error /0 Nome do cedente não informado " Gostaria de saber como resolver no boleto.ini esta assim: [Cedente] Nome=Empresa teste CNPJCPF=99.999.999/9999-99 Logradouro=Rua Evaristo Mendes Obrigado JMSilva
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.