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