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.

TOleauto - Componente instalado ?

Foro público de Xailer en español
Responder
Claudio C
Mensajes: 60
Registrado: Dom Sep 20, 2015 8:13 pm
Ubicación: Buenos Aires

TOleauto - Componente instalado ?

Mensaje por Claudio C »

Estimados:
Me conecto a un servicio de factura electronica. Lo hago mediante:
oWSAA:=TOleAuto():New("WSAA")

Todo funciona ok, Pero necesito chequear si el componente esta instalado en el equipo (para capturar el error cuando este en produccion la aplicacion).

Si instancio un componente inexistente, por ejemplo:
oWSAA:=TOleAuto():New("WS???AA")

no hay, TRY CATCH , ON ERROR (de la clase) o errorhandler que capture el hecho de que el componente no existe.
No encontre cual podria ser la variable de instancia del objeto Ole enn cada caso
Ole.png
Ole.png (15.02 KiB) Visto 327 veces
En un viejo post encontré: "Empty( oOle:__hObj ) devuelve .T. si no se ha podido instanciar."
Pero tampoco funcionó ( este post es de la era en que xailer estaba en xHarbour)

Cualquier ayuda, link o pista sera bienvenido.
Claudio
Claudio C
Mensajes: 60
Registrado: Dom Sep 20, 2015 8:13 pm
Ubicación: Buenos Aires

Re: TOleauto - Componente instalado ? [fin]

Mensaje por Claudio C »

Me respondo a mi mismo. Quizá a alguien le sirva.
ToleAuto no tiene método o propiedad que indique si el objeto instanciado se vinculó o no a una dll registrada en la PC ( o al menos yo no pude encontrarlo )
Lo que sí pude hacer es una solicitud al objeto a manipular, (luego de crear el ole). Ahí sí, cuando el objeto ole es válido, funciona y si no se instanció, entra al catch.
CatchOle 2023-09-11 100936.png
CatchOle 2023-09-11 100936.png (20.54 KiB) Visto 305 veces
La línea que produce el 'catch' es:
ok := ::oWSAA:ObtenerTagXml('test') donde instancio un metodo del objeto ole

Muy primitivo pero, aparentemente, funciona.

NOTA: sobre el área izquierda, el debug muestra el mensaje exacto de lo que pasa ¿ Puede capturarse ese mensaje?
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9218
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TOleauto - Componente instalado ?

Mensaje por ignacio »

Código: Seleccionar todo

TRY
  ....
  lOk := .t.
CATCH
  lOk := .f.
END
Saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5703
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: TOleauto - Componente instalado ?

Mensaje por jfgimenez »

Claudio,

el comando CATCH puede recibir un objeto error:

Código: Seleccionar todo

LOCAL oError
...
TRY
   ...
CATCH oError
   MsgError( oError:Description )
END
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder