Bom dia...
Nilton.. é meio chatinho mesmo, até pegar o jeito...
Para ler um ini
// ACbrNfe.dll
#define DC_CALL_STD 0x0020 // __stdcall
#define DLL_OSAPI DC_CALL_STD
#define STR_LEN 256
#define ACBrLIB "ACBrNFe32.dll"
FUNCTION LerIni_acbr(cSecao, cChave, cFile)
LOCAL GetList := {}
Local cTexto := ''
Local cBufferlen
Local hLib
Local iRetorno
If ! File( cFile )
Return ''
EndIf
hLib := DllLoad( ACBrLIB )
iRet := DllCall( hLib, DLL_OSAPI, "NFE_Inicializar", "", "")
bufferLen:= STR_LEN
cTexto := Space(bufferLen)
iRet := DllCall( hLib, DLL_OSAPI,"NFE_ConfigLer", cFile )
iRet := DllCall( hLib, DLL_OSAPI,"NFE_ConfigLerValor", hb_StrToUTF8(cSecao), hb_StrToUTF8(cChave), @cTexto, @bufferLen )
iRet := DllCall( hLib, DLL_OSAPI,"NFE_Finalizar")
hLib := NIL
If iRet = 0
// Gambiarra até saber como usa stran para retirar o ultimo caracter
cTexto := Left( cTexto, Len(Alltrim(cTexto)) -1 )
Else
cTexto := ''
EndIF
RETURN cTexto
Para imprimir Danfe ou gerar o pdf
FUNCTION ImprimirPDFNfe(cArq, lPdf)
LOCAL cTela := SaveScreen()
LOCAL GetList := {}
Local cTexto := ''
Local cBufferlen
Local hLib
hLib := DllLoad(ACBrLIB)
iRet := DllCall(hLib, DLL_OSAPI, "NFE_Inicializar", "", "")
bufferLen:= STR_LEN
cTexto := Space(bufferLen)
iRet := DllCall(hLib, DLL_OSAPI, "NFE_CarregarXML", hb_StrToUTF8(cArq))
If lPdf
iRet := DllCall(hLib, DLL_OSAPI, "NFE_ImprimirPDF")
Else
iRet := DllCall(hLib, DLL_OSAPI,"NFE_Imprimir", hb_StrToUTF8(""), 1, hb_StrToUTF8(""), hb_StrToUTF8("True"), hb_StrToUTF8(""), hb_StrToUTF8(''), hb_StrToUTF8(""))
EndIf
iRet := DllCall( hLib, DLL_OSAPI,"NFE_Finalizar")
hLib := NIL
RETURN nil
Detalhes.. você tem que carregar o xml, depois é só mandar gerar o PDF ou imprimir. Depois que carregar o xml não precisa mais fazer referência a ele. É muito rápido e dinâmico.. porque não precisa alterar o layout.. é só baixar a última versão que todas as mudanças necessárias já estão prontas.
o PDF será gerado na path configurado no acbrlib.ini
tem que ter todas estas libs na pasta do executável.
Agora que você que manja bem de classe... pode dar uma olhada no acbrnfedemo do projeto... tem classe para a nfe pronta e até para boleto.
A maioria dos comandos do acbrmonitor estão no acbrnfedemo..
Isso compilo com Hb32
Att..
Rubens