Muy buenas foro, necesitamos modificar la funcion ActXInvoke para poder pasarle "n" parámetros.
Un Saludo.
Muy buenas foro, necesitamos modificar la funcion ActXInvoke para poder pasarle "n" parámetros.
Un Saludo.
METHOD Do( cMethodName, ... ) CLASS TActiveX
return ActXInvoke( ActXPdisp( ::hActiveX ), cMethodName, ... )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...
Si, tienes que hacerlo asi, como dices, con xHarbour.
Si usas Harbour entonces puedes usar "..." como te he indicado ![]()
Voy a probar. Gracias.
con xharbour puedes usar
METHOD Do( ... ) CLASS TActiveX
uRet = hb_execFromArray( ActXInvoke( ActXPdisp( ::hActiveX ), hb_aParams() ) )
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.
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 )