FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Modificar Número de Parametros en ActXInvoke
Posts: 485
Joined: Fri Feb 09, 2007 10:34 AM

Modificar Número de Parametros en ActXInvoke

Posted: Thu Jun 12, 2008 12:02 PM

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

Un Saludo.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Modificar Número de Parametros en ActXInvoke

Posted: Fri Jun 13, 2008 11:37 PM
Prueba a modificar el metodo Do() de esta forma:
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
Posts: 485
Joined: Fri Feb 09, 2007 10:34 AM

Re:

Posted: Mon Jun 16, 2008 08: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...

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Modificar Número de Parametros en ActXInvoke

Posted: Mon Jun 16, 2008 08: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
Posts: 485
Joined: Fri Feb 09, 2007 10:34 AM

Re:

Posted: Mon Jun 16, 2008 10:59 AM

Voy a probar. Gracias.

Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

Modificar Número de Parametros en ActXInvoke

Posted: Mon Jun 16, 2008 03:34 PM

con xharbour puedes usar

METHOD Do( ... ) CLASS TActiveX
uRet = hb_execFromArray( ActXInvoke( ActXPdisp( ::hActiveX ), hb_aParams() ) )

Saludos

Quique
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Modificar Número de Parametros en ActXInvoke

Posted: Mon Jun 16, 2008 06: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
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM

Modificar Número de Parametros en ActXInvoke

Posted: Mon Jun 16, 2008 07: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

Continue the discussion