In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Exemplo como ler Function em DLL (Xailer 2)
Exemplo como ler Function em DLL (Xailer 2)
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
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)
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
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
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
Exemplo como ler Function em DLL (Xailer 2)
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
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)
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
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)
> 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
>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
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
Exemplo como ler Function em DLL (Xailer 2)
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.
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)
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.
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)
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)
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)
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)
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)
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)****************************************** ****
&("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)
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)
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)