Modificar Número de Parametros en ActXInvoke

Modificar Número de Parametros en ActXInvoke

Postby softruz » Thu Jun 12, 2008 12:02 pm

Muy buenas foro, necesitamos modificar la funcion ActXInvoke para poder pasarle "n" parámetros.

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Postby Antonio Linares » Fri Jun 13, 2008 11:37 pm

Prueba a modificar el metodo Do() de esta forma:
Code: Select all  Expand view  RUN
METHOD Do( cMethodName, ... ) CLASS TActiveX

return ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, ... )

Deja los "..." tal como estan en este codigo
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re:

Postby softruz » Mon Jun 16, 2008 8:25 am

No te entiendo bien pero mira este es el código que tengo:

METHOD Do( cMethodName, uParam1, uParam2, uParam3, uParam4 ) CLASS TActiveX

local uRet

do case
case PCount() == 1
uRet = ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName )

case PCount() == 2
uRet = ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, uParam1 )

case PCount() == 3
uRet = ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, uParam1, uParam2 )

case PCount() == 4
uRet = ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, uParam1, uParam2,;
uParam3 )
case PCount() == 5
uRet = ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, uParam1, uParam2,;
uParam3, uParam4 )
endcase

return uRet


si quiero introducir n parámetros solo puedo introducir:

case PCount() == 6
uRet = ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, uParam1, uParam2, uParam3, uParam4, uParam5)

y así para n parámetros...
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Postby Antonio Linares » Mon Jun 16, 2008 8:38 am

Si, tienes que hacerlo asi, como dices, con xHarbour.

Si usas Harbour entonces puedes usar "..." como te he indicado :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re:

Postby softruz » Mon Jun 16, 2008 10:59 am

Voy a probar. Gracias.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Postby quique » Mon Jun 16, 2008 3:34 pm

con xharbour puedes usar

METHOD Do( ... ) CLASS TActiveX
uRet = hb_execFromArray( ActXInvoke( ActXPdisp( ::hActiveX ), hb_aParams() ) )
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Antonio Linares » Mon Jun 16, 2008 6:35 pm

Si, tambien se puede usar esa opción.

Es una lástima que Harbour y xHarbour no usen la misma notación para "..." ya que la forma de usarlo de Harbour es la más simple e intuitiva:

"..." representa "todos los parámetros" y sirve tanto para recibidos como para enviados a una función.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby quique » Mon Jun 16, 2008 7:08 pm

Estoy de acuerdo, me gusta mas la sintaxis de harbour para estas situaciones, por cierto corrijo la respuesta que dí, porque por responder rápido no me fije bien en el problema ni en lo que escribí

METHOD Do( ... ) CLASS TActiveX
local aParams := hb_aParams()
aIns( aParams, 1, ActXPdisp( ::hActiveX ), .t. )
return hb_execFromArray( @ActXInvoke(), aParams )
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 25 guests

cron