Página 1 de 1
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 02 Jul 2012 16:30
por anfm
Boa tarde,
Estou criando uma DLL em Delphi e gostaria de usá-la em um programa desenvolvido em xHarbour.
Criei a seguinte rotina no Delphi em uma DLL.
function versao : pChar; Stdcall;
begin
Result := pchar('TESTE DE VERSAO');
end;
Alguém poderia postar um exemplo de como chamar esta rotina no xHarbour?
Também gostaria de um exemplo mostrando como enviar um comando para a DLL.
Ex:
function enviacomando(const Comando : pChar) : integer; Stdcall;
Desde já agradeço,
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 02 Jul 2012 20:25
por viniciuspc
salve anfm, :xau
tambem tive problemas a algumas semanas atras, dê uma olhada em : viewtopic.php?f=4&t=9424
[]´s
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 02 Jul 2012 22:44
por alaminojunior
Boa noite.
Não manjo de Delphi e por isso não posso dar maiores esclarecimentos, mas um colega desenvolveu uma DLL em Delphi para captura do XML da NFe e utilizo da seguinte forma:
Código: Selecionar todos
Function main
Local handle:= loadlibrary('recxml.dll')
if handle < 1
msginfo('DLL nÆo carregada')
return
endif
dllcall(handle,32,"RecXML")
freelibrary(handle)
return
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 11:37
por HASA
:%
Bom dia alaminojunior, será que esse seu colega está comercializando a dll ?

)
Hasa
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 11:46
por alaminojunior
HASA, envia um email para mim que eu rebato para ele e então vocês tratam do assunto.
Um detalhe é que ele me disse meses atrás que tal recurso não estava mais sendo disponibilizado pelas SEFAZ´s, pois é de lá que ele extrai as informações.
Mas dias atrás eu precisei usar e o arquivo xml foi gerado.
Quem sabe ...
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 12:54
por Imatech
Já ouviram falar do RecuperaXML: ACBR
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 13:14
por anfm
Meu problema está em obter um retorno "legível" pro xHarbour.
Tenho a seguinte função no delphi:
Código: Selecionar todos
function versao(var Resposta : pansichar ) : integer; Stdcall; export;
begin
Resposta := pansichar('TESTE');
Result := 123;
end;
E tentei chamar no xHarbour da seguinte forma:
Código: Selecionar todos
#define DC_MICROSOFT 0x0000 // Default
#define DC_BORLAND 0x0001 // Borland compat
#define DC_CALL_CDECL 0x0010 // __cdecl
#define DC_CALL_STD 0x0020 // __stdcall
#define DC_RETVAL_MATH4 0x0100 // Return value in ST
#define DC_RETVAL_MATH8 0x0200 // Return value in ST
STATIC pComando[9]
FUNCTION Main
LOCAL nRet, pParametro
LOCAL hDLL
LOCAL cData
nRet := space(20)
pParametro := space(20)
pComando[1] := DllPrepareCall( "ioserial.dll", DC_CALL_STD, "versao" )
nRet := DllExecuteCall( pComando[1], @pParametro )
? "versao"
? nRet
? pParametro
hDLL := DllLoad( "ioserial.dll" )
cData := Space( 24 )
DllCall( hDll, NIL, "versao", @cData )
? ">" + cData + "<"
DllUnload( hDLL )
inkey(0)
Return( Nil )
Mas das duas formas tenho um resultado com caracteres estranhos no xHarbour, se fizer o consumo dessa mesma função num aplicativo em Delphi a resposta é exibida corretamente.
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 13:21
por alaminojunior
André, tente trocar o 2ª parâmetro da chamada a dll de
NIL para
32.
Lembrando ...
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 13:49
por anfm
Não foi tbm, sempre recebo como retorno "∟T)"
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 14:21
por alxsts
Olá!
Talvez tenha que converter o retorno com a função HB_AnsiToOem( <cANSI_String> ) --> cOEM_String. Ou ajustar a code page com as funções apropriadas (HB_LangSelect(), HB_SetCodePage()), antes de chamar a DLL.
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 03 Jul 2012 15:54
por HASA
Olá IMATECH
O executavel é bom sim eu conheço mas... é externo ao meu sistema a ideia da dll é legal pois posso chamar de dentro do sistema, assim como espero que o André esteja criando com esses testes alguma DLL ( AcbrNfe.dll ) seria muito bom,
:xau
Como usar uma DLL criada em Delphi no xHarbour
Enviado: 05 Jul 2012 19:43
por janio
Para Gerar chaves Publica e Privada pela Dll da Bematech, faço da seguinte forma e FUNCIONA:
Código: Selecionar todos
Function GeraChavePrivadaPublica
Local kDll, oRet, H_Handle
Local chPublica := Space(256)
Local chPrivada := Space(256)
kDll := LoadLibrary("sign_bema.dll")
oRet := DllCall(kDll,32,"genkkey", chPublica,chPrivada)
FreeLibrary(kDll)
If oRet = 0
Msg("Erro " + Str(oRet) + " ao tentar gerar chaves")
Return .f.
Endif
// exibe retorno
? chPublica
? chPrivada
Return .t.
PS: Se puder enviar a dll pra ver se por aki tenho o mesmo retorno q vc... (janioaguiar@ig.com.br)