Página 1 de 1

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Dom Abr 26, 2009 3:53 pm
por emeasoft
No Xailer 2 podemos criar uma DLL somente de Function.
Ex:
DLL MyFunc:
Function MyFunc1(par1)
...
Return Nil
Function MyFunc2(par1,par2)
....
Return Nil
etc....
Para ler as funçíµes a partir do projeto principal ou de outra DLL é
necessário declarar em REQUEST e usar HB_LibLoad para cada função.
Fiz a FUNCTION abaixo que não precisa do REQUEST:
FUNCTION
Func_DLL(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15, f16,f17,f18,f19,f20)
LOCAL nHandle,xReturn
nHandle := HB_LibLoad( "MyFunc.DLL" )
xReturn:=EVAL({||&(f1)(f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f 12,f13,f14,f15,f16,f17,f18,f19,f20)})
HB_LibFree( nHandle )
RETURN(xReturn)
Esta função deverá ficar no projeto principal do EXE.
Para ler uma função na DLL faça assim:
Func_DLL("MyFunc1",DATE())
ou
xvalor:=Func_DLL("Myfunc2",Self,5,......)
etc...
onde o primeiro parí¢metro é o nome da Function na DLL e
os demais parí¢mentos poderão ou não ser passados, se existir.
Espero ter contribuido.
Mário
www.eMeAsOfT.com.br

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Dom Abr 26, 2009 3:57 pm
por emeasoft
Correto:
FUNCTION
Func_DLL(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15, f16,f17,f18,f19,f20)
LOCAL nHandle,xReturn
nHandle := HB_LibLoad( "MyFunc.DLL" )
xReturn:=EVAL({||&(f1)(f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f 12,f13,f14,f15,f16,f17,f18,f19,f20)})
HB_LibFree( nHandle )
RETURN(xReturn)
"Mário Angelini" <mario@emeasoft.com.br> escreveu na mensagem
news:[email=49f46755@svctag-j7w3v3j....]49f46755@svctag-j7w3v3j....[/email]
> No Xailer 2 podemos criar uma DLL somente de Function.
> Ex:
> DLL MyFunc:
>
> Function MyFunc1(par1)
> ..
> Return Nil
>
> Function MyFunc2(par1,par2)
> ...
> Return Nil
> etc....
>
> Para ler as funçíµes a partir do projeto principal ou de outra DLL é
> necessário declarar em REQUEST e usar HB_LibLoad para cada função.
>
> Fiz a FUNCTION abaixo que não precisa do REQUEST:
>
> FUNCTION
> Func_DLL(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15, f16,f17,f18,f19,f20)
> LOCAL nHandle,xReturn
> nHandle := HB_LibLoad( "MyFunc.DLL" )
> xReturn:=EVAL({||&(f1)(f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f 12,f13,f14,f15,f16,f17,f18,f19,f20)})
> HB_LibFree( nHandle )
> RETURN(xReturn)
>
> Esta função deverá ficar no projeto principal do EXE.
>
> Para ler uma função na DLL faça assim:
>
> Func_DLL("MyFunc1",DATE())
> ou
> xvalor:=Func_DLL("Myfunc2",Self,5,......)
> etc...
> onde o primeiro parí¢metro é o nome da Function na DLL e
> os demais parí¢mentos poderão ou não ser passados, se existir.
>
>
>
>
> Espero ter contribuido.
> Mário
> www.eMeAsOfT.com.br

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Jue Abr 30, 2009 11:15 am
por emeasoft
Segue exemplo.
Mário
www.eMeAsOfT.com.br
--

Attached files TESTEDLL.ZIP (5.3 KB)Â

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Vie May 01, 2009 2:00 pm
por jrcpoli-quitar
Saludos:
Interesante tu aportación para leer funciones directamente dentro de una
Dll, pero veo que algunas las van a usar para algo que ya existe por eso
te aconsejo que leas este artí­culo.
http://xailer.info/esp/?p=160
José Ramón Castro.
Mário Angelini escribió:
> No Xailer 2 podemos criar uma DLL somente de Function.
> Ex:
> DLL MyFunc:
>
> Function MyFunc1(par1)
> ..
> Return Nil
>
> Function MyFunc2(par1,par2)
> ...
> Return Nil
> etc....
>
> Para ler as funçíµes a partir do projeto principal ou de outra DLL é
> necessário declarar em REQUEST e usar HB_LibLoad para cada função.
>
> Fiz a FUNCTION abaixo que não precisa do REQUEST:
>
> FUNCTION
> Func_DLL(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15, f16,f17,f18,f19,f20)
>
> LOCAL nHandle,xReturn
> nHandle := HB_LibLoad( "MyFunc.DLL" )
> xReturn:=EVAL({||&(f1)(f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f 12,f13,f14,f15,f16,f17,f18,f19,f20)})
>
> HB_LibFree( nHandle )
> RETURN(xReturn)
>
> Esta função deverá ficar no projeto principal do EXE.
>
> Para ler uma função na DLL faça assim:
>
> Func_DLL("MyFunc1",DATE())
> ou
> xvalor:=Func_DLL("Myfunc2",Self,5,......)
> etc...
> onde o primeiro parí¢metro é o nome da Function na DLL e
> os demais parí¢mentos poderão ou não ser passados, se existir.
>
>
>
>
> Espero ter contribuido.
> Mário
> www.eMeAsOfT.com.br

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Vie May 01, 2009 10:25 pm
por emeasoft
Ramón,
O link abaixo vai para:
Nueva versión de Messages.Prg para Xailer
Aqui os dejo una nueva versión de Messages.Prg con su manual comp....
í‰ isto mesmo?
Pois não entendi sua colocação.
Mário
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escreveu
na mensagem news:[email=49fae47f@svctag-j7w3v3j....]49fae47f@svctag-j7w3v3j....[/email]
> Saludos:
>
> Interesante tu aportación para leer funciones directamente dentro de una
> Dll, pero veo que algunas las van a usar para algo que ya existe por eso
> te aconsejo que leas este artí­culo.
>
> http://xailer.info/esp/?p=160
>
> José Ramón Castro.
> Mário Angelini escribió:
>> No Xailer 2 podemos criar uma DLL somente de Function.
>> Ex:
>> DLL MyFunc:
>>
>> Function MyFunc1(par1)
>> ..
>> Return Nil
>>
>> Function MyFunc2(par1,par2)
>> ...
>> Return Nil
>> etc....
>>
>> Para ler as funçíµes a partir do projeto principal ou de outra DLL é
>> necessário declarar em REQUEST e usar HB_LibLoad para cada função.
>>
>> Fiz a FUNCTION abaixo que não precisa do REQUEST:
>>
>> FUNCTION
>> Func_DLL(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15, f16,f17,f18,f19,f20)
>> LOCAL nHandle,xReturn
>> nHandle := HB_LibLoad( "MyFunc.DLL" )
>> xReturn:=EVAL({||&(f1)(f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f 12,f13,f14,f15,f16,f17,f18,f19,f20)})
>> HB_LibFree( nHandle )
>> RETURN(xReturn)
>>
>> Esta função deverá ficar no projeto principal do EXE.
>>
>> Para ler uma função na DLL faça assim:
>>
>> Func_DLL("MyFunc1",DATE())
>> ou
>> xvalor:=Func_DLL("Myfunc2",Self,5,......)
>> etc...
>> onde o primeiro parí¢metro é o nome da Function na DLL e
>> os demais parí¢mentos poderão ou não ser passados, se existir.
>>
>>
>>
>>
>> Espero ter contribuido.
>> Mário
>> www.eMeAsOfT.com.br

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Lun May 04, 2009 8:57 pm
por emeasoft
> Interesante tu aportación para leer funciones directamente dentro de una
>Dll, pero veo que algunas las van a usar para algo que ya existe por eso
>te aconsejo que leas este artí­culo.
> http://xailer.info/esp/?p=160
Ramón, poderia por favor me explicar melhor o que vocíª quis dizer
com a citação do link pois não consegui entender.
Grato
Mário

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Mar May 05, 2009 10:00 am
por jrcpoli-quitar
Mario:
Mário Angelini escribió:
>> Interesante tu aportación para leer funciones directamente dentro de una
> >Dll, pero veo que algunas las van a usar para algo que ya existe por eso
> >te aconsejo que leas este artí­culo.
>> http://xailer.info/esp/?p=160
>
> Ramón, poderia por favor me explicar melhor o que vocíª quis dizer
> com a citação do link pois não consegui entender.
> Grato
> Mário
Lo que quise decirte es que si dentro de las funciones que ibas a
utilizar habí­a funciones parecidas a las que tiene mensajes no hací­a
falta que las implementaras, que ya estaban hechas, con el fin de que
nos las duplicaras, no me referí­a a que miraras el ejemplo como una
implementación de la DLL.
No se si me entiendes.
José Ramón Castro.

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Mar May 05, 2009 10:53 am
por emeasoft
Ramón:
Ahora entiendo.
Pero fue sólo un ejemplo.
Se debe cambiar para que no coincida con el nombre de la función,
simplemente.
Saludos.
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escreveu
na mensagem news:49fff20a$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Mario:
> Mário Angelini escribió:
>>> Interesante tu aportación para leer funciones directamente dentro de una
>> >Dll, pero veo que algunas las van a usar para algo que ya existe por
>> eso
>> >te aconsejo que leas este artí­culo.
>>> http://xailer.info/esp/?p=160
>>
>> Ramón, poderia por favor me explicar melhor o que vocíª quis dizer
>> com a citação do link pois não consegui entender.
>> Grato
>> Mário
>
> Lo que quise decirte es que si dentro de las funciones que ibas a utilizar
> habí­a funciones parecidas a las que tiene mensajes no hací­a falta que las
> implementaras, que ya estaban hechas, con el fin de que nos las
> duplicaras, no me referí­a a que miraras el ejemplo como una implementación
> de la DLL.
>
> No se si me entiendes.
>
> José Ramón Castro.

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Vie May 15, 2009 10:59 am
por emeasoft
Hola!!
Busca ayudar a xHarbour vio una función que dice FUNCTION
DLL directa.
Mário
HB_LibDo()
Executes a function located in a dynamically loaded xHarbour DLL.
Ejemplo:
FUNCTION
Func_DLL(nfunc,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f1 4,f15,f16,f17,f18,f19,f20)
LOCAL nHandle,nRet
IF !FILE(""+CURDIR()+"MyFunc.DLL")
MsgStop("No se ha econtrado DLL: "+""+CURDIR()+"MyFunc.DLL",)
ELSE
nHandle := HB_LibLoad( "MyFunc.DLL" )
//
nRet:=EVAL({||&(nFunc)(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f1 1,f12,f13,f14,f15,f16,f17,f18,f19,f20)})
// or:
nRet:=HB_LibDo(nfunc,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12, f13,f14,f15,f16,f17,f18,f19,f20) HB_LibFree( nHandle )ENDIFRETURN(nRet)

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Vie May 15, 2009 11:03 am
por emeasoft
Hola!!
Busca Ayuda a xHarbour vio una función que dice FUNCTION
DLL directa.
Mário
HB_LibDo()
Executes a function located in a dynamically loaded xHarbour DLL.
Ejemplo:
FUNCTION
Func_DLL(nfunc,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f1 4,f15,f16,f17,f18,f19,f20)
LOCAL nHandle,nRet
IF !FILE(""+CURDIR()+"MyFunc.DLL")
MsgStop("No se ha econtrado DLL: "+""+CURDIR()+"MyFunc.DLL",)
ELSE
nHandle := HB_LibLoad( "MyFunc.DLL" )
//
nRet:=EVAL({||&(nFunc)(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f1 1,f12,f13,f14,f15,f16,f17,f18,f19,f20)})
// or:
nRet:=HB_LibDo(nfunc,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12, f13,f14,f15,f16,f17,f18,f19,f20)HB_LibFree( nHandle )ENDIFRETURN(nRet)

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Vie May 15, 2009 1:07 pm
por emeasoft
Pero la forma más rápida serí­a la siguiente:
&("SayHello")( "Called via Macro operator" )
Véase la "Note" a continuación.
EXAMPLE:
// The example consists of two file. The first is compiled to an EXE
// and the second to a DLL. Function SayHello() resides in the DLL
// and is called from the EXE.
/* ------------------------------------------------------------
// File: DYNDLL.PRG
// Compile and link as EXE for DLL usage
// e.g. XBuild -usedll dyndll.exe dyndll.prg
// ---------------------------------------------------------- */
PROCEDURE Main
LOCAL pDLL
? Type( "SayHello()" )
// result is "U" because the function SayHello()
// does not exist
? pDLL := LibLoad( "dyndll1.dll" )
// result is a pointer to the loaded DLL
? Type( "SayHello()" )
// result is "UI" because function SayHello()
// exists now (in loaded DLL)
? HB_LibDo( "SayHello" )
// result is: 1
// displays : Hello from DLL
? HB_LibDo( "SayHello", "Called via HB_LibDo()" )
// result is: 2
// displays : Called via HB_LibDo()
? &("SayHello")( "Called via Macro operator" )
// result is: 3
// displays : Called via Macro operator
//
// NOTE:
// This is the fastest way of calling a DLL function:
//
// The macro operator "&" looks up the function symbol.
// The execution operator "()" calls the function and
// passes parameter(s) on to it
? LibFree( pDll )
// result is .T., DLL is successfully unloaded
? Type( "SayHello()" )
// result is "U" because the function SayHello()
// does not exist anymore
RETURN
/* ------------------------------------------------------------
// File: DYNDLL1.PRG
// Compile and link as DLL
// e.g. XBuild dyndll1.dll dyndll.prg
// ---------------------------------------------------------- */
FUNCTION SayHello( cText )
STATIC nCalls := 0
IF cText == NIL
cText := "Hello from DLL"
ENDIF
? cText
RETURN ++nCalls
************************************************************ *****************
FUNCTION
Func_DLL(nfunc,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f1 4,f15,f16,f17,f18,f19,f20)
LOCAL nHandle,nRet
IF !FILE(""+CURDIR()+"MyFunc.DLL")
MsgStop("DLL não localizada em: "+""+CURDIR()+"MyFunc.DLL","AVISAR O
SUPORTE Tí‰CNICO:")
ELSE
nHandle := HB_LibLoad( "MyFunc.DLL" )
*
nRet:=EVAL({||&(nFunc)(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f1 1,f12,f13,f14,f15,f16,f17,f18,f19,f20)})
nRet:=&(nFunc)(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f1 3,f14,f15,f16,f17,f18,f19,f20)*nRet:=HB_LibDo(nfunc,f1,f2,f3 ,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f 20) HB_LibFree( nHandle )ENDIFRETURN(nRet)****************************************** ****

Exemplo como ler Function em DLL (Xailer 2)

Publicado: Vie May 15, 2009 1:11 pm
por emeasoft
Lo sentimos, el editor de texto por defecto:
FUNCTION
Func_DLL(nfunc,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f1 4,f15,f16,f17,f18,f19,f20)
LOCAL nHandle,nRet
IF !FILE(""+CURDIR()+"MyFunc.DLL")
MsgStop("DLL não localizada em: "+""+CURDIR()+"MyFunc.DLL")
ELSE
nHandle := HB_LibLoad( "MyFunc.DLL" )
"
nRet:=&(nFunc)(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f1 3,f14,f15,f16,f17,f18,f19,f20)
"
*sin las comillas "
HB_LibFree( nHandle )
ENDIF
RETURN(nRet)