DLLCALL - Resolvido - Agradecimento Giovany Vecchi

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
zazibr
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 11 Set 2004 17:07
Localização: Campo Grande/MS

DLLCALL - Resolvido - Agradecimento Giovany Vecchi

Mensagem por zazibr »

ola pessoal

estou chamando uma dll para gerar codigo de barras ja uso ela em clarion e gostaria de usar no fivewin e ou win32prn


o .h em c esta assim
//SeqLib32.h

Código: Selecionar todos

extern "C"
{
void far stdcall Sequence2(unsigned char Code, unsigned char Options, char far *datain, char far *dataout);
}
//Make sure that there is enough space in "dataout" to hold returned sequence. It may
//be longer than the original data!

1a Tentativa
============

cBarrasEnvio := "006198003004"
cBarrasRetorno := Space( 12 )
hCodigoBarras := LoadLibrary("SeqLib32.DLL")
nProcesso := GetProcAddress(hCodigoBarras, "Sequence2" )
nRetorno := DLLCALL( hCodigoBarras,nProcesso,, 2, 0, @cBarrasEnvio, @cBarrasRetorno )

so que o retorno (cBarrasRetorno) é vazio

2a Tentativa
============

#define DC_CALL_STD 0x0020

cBarrasEnvio := "006198003004"
cBarrasRetorno := Space( 12 )

nRetorno := DLLCALL( "SeqLib32.dll" ,DC_CALL_STD,"sequence2", 2, 0, @cBarrasEnvio, @cBarrasRetorno )

so que o retorno (cBarrasRetorno) é vazio


alguma dica ?
******
xharbour 1.1.0 + gtwvw + dbfcdx
fw 8.01+borland resouce workshop/fw pcc
USANDO GTWVW + FW JUNTO ....

msn..: zazibr@hotmail.com
skype: zazibr
Daniel lopes Filho
Campo Grande/MS
Editado pela última vez por zazibr em 11 Abr 2008 20:15, em um total de 1 vez.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem por Hasse »

Bom dia zazibr.

Dê uma olhada no post:
https://pctoledo.org/forum/viewtopic.php?t=6465

Quase no final do código tem alguns exemplos de impressão de Código-de-Barras com a Classe Win32prn().

Ali consta uma observação informando que diz:
"Aqui começa a impressão da 6ª página"
Impressão do Códigos de Barras 'Bar Code'
Impressão do Códigos de Barras '3 de 9 Barcode'
Impressão do Códigos de Barras 'Barcoding'

O exemplo pode ser copiado e colado assim como está. Basta compilar e rodar, e observar os resultados. Quase todos os recursos da Classe estão presentes neste exemplo. Tudo está bem documentado.

Boa sorte.

Qualquer dúvida entre em contato.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
zazibr
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 11 Set 2004 17:07
Localização: Campo Grande/MS

Mensagem por zazibr »

obrigado por responder + o código de barras que estou usando é o Interleave 2 of 5 que precisa de calculo pra gerar ja uso essa dll em outra linguagem e a fonte sem me preocupar com qualquer violação de copyright pois tenho o direito de uso do produto

somente a fonte nao imprime + o leitor não lê

por isso quero usar essa ferramenta e estou inicialmente fazendo a impressao usando o fivewin com o win32prn ja tive alguns problemas que funciona certo em uma impressora (HP multifuncional) e em outra não (HP laser)
Avatar do usuário
zazibr
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 11 Set 2004 17:07
Localização: Campo Grande/MS

Mensagem por zazibr »

consegui fazer funcionar com o fivewin

no meu caso a dll foi feita em C e é case sensitive


agradeço ao Giovany Vecchi - ajuda via msn

DLL32 FUNCTION sequence2( nCode AS LONG ,;
nOptions AS LONG ,;
cDatain AS STRING,;
@cDataout AS STRING ) AS VOID PASCAL ;
FROM "Sequence2" LIB "seqlib32.dll"


que gerou um codigo doido no ppo

function sequence2( nCode,nOptions,cDatain,cDataout )
local hDLL := If( ValType( "seqlib32.dll" ) == "N", "seqlib32.dll", LoadLibrary( "seqlib32.dll" ) )
local uResult
local cFarProc
if Abs( hDLL ) > 32
cFarProc = GetProcAddress( hDLL, If( Empty( "Sequence2" ) == .T., "sequence2", "Sequence2" ), .T., 0,7,7,8,8 )
uResult = CallDLL( cFarProc,nCode,nOptions,@cDatain,@cDataout )
; IIF( ValType( "seqlib32.dll" ) == "N",, FreeLibrary( hDLL ) )
else

MsgAlert( "Error code: " + LTrim( Str( hDLL ) ) + " loading " + If( ValType( "seqlib32.dll" ) == "C", "seqlib32.dll", Str( "seqlib32.dll" ) ) )
end
return uResult
Responder