¿Existe alguna manera de volcar en un array los miembros de un objeto
TOleauto? Por ejemplo, los miembros que un objeto TOleauto adquiere al
hacer una consulta SELECT sobre WMI.
En caso de que TOleauto tenga un miembro que es en realidad un array,
¿como visualizar el contenido de dicho array?
Por ejemplo, haciendo esta consulta a WMI sobre Toleauto: ("Select *
from Win32_OperatingSystem") uno de los miembros segun MSDN de Microsoft
sería MUILanguages[] que contendría un array con los lenguajes
instalados. ¿Es posible visualizar su contenido?
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.
TOleAuto y Arrays
- ignacio
- Site Admin
- Mensajes: 9440
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
TOleAuto y Arrays
Ángel,
En principio no debería haber ningún problema. Debería poder interrogar
dicho miembro como un array cualquiera.
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:48be4e22$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> ¿Existe alguna manera de volcar en un array los miembros de un objeto
> TOleauto? Por ejemplo, los miembros que un objeto TOleauto adquiere al
> hacer una consulta SELECT sobre WMI.
>
> En caso de que TOleauto tenga un miembro que es en realidad un array,
> ¿como visualizar el contenido de dicho array?
>
> Por ejemplo, haciendo esta consulta a WMI sobre Toleauto: ("Select * from
> Win32_OperatingSystem") uno de los miembros segun MSDN de Microsoft sería
> MUILanguages[] que contendría un array con los lenguajes instalados. ¿Es
> posible visualizar su contenido?
En principio no debería haber ningún problema. Debería poder interrogar
dicho miembro como un array cualquiera.
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:48be4e22$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> ¿Existe alguna manera de volcar en un array los miembros de un objeto
> TOleauto? Por ejemplo, los miembros que un objeto TOleauto adquiere al
> hacer una consulta SELECT sobre WMI.
>
> En caso de que TOleauto tenga un miembro que es en realidad un array,
> ¿como visualizar el contenido de dicho array?
>
> Por ejemplo, haciendo esta consulta a WMI sobre Toleauto: ("Select * from
> Win32_OperatingSystem") uno de los miembros segun MSDN de Microsoft sería
> MUILanguages[] que contendría un array con los lenguajes instalados. ¿Es
> posible visualizar su contenido?
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
TOleAuto y Arrays
Ignacio Ortiz de Zúñiga escribió:
> íngel,
>
> En principio no debería haber ningún problema. Debería poder interrogar
> dicho miembro como un array cualquiera.
>
> Un saludo,
>
Ignacio, por más que lo intento no consigo acceder a los miembros
TOleauto que son arrays; simplemente, recibo el error
DISP_E_MEMBERNOTFOUND. He buscado en el prg de la clase alguna solución,
pero tampoco la encuentro.
Algo que me sería de mucha utilidad sería poder obtener ya sea en un
array o en una cadena, los handle a cada miembro de un objeto TOleauto o
bien el nombre de cada miembro, ya que en el debugger no es posible
visualizar el contenido interno de esta clase. ¿es esto posible?
Pregunta aparte, ¿esta clase está documentada en xHarbour Language
Reference Guide? Porque si es así, con ésta y con el resto de clases,
merecería la pena adquirirlo.
Saludos.
> íngel,
>
> En principio no debería haber ningún problema. Debería poder interrogar
> dicho miembro como un array cualquiera.
>
> Un saludo,
>
Ignacio, por más que lo intento no consigo acceder a los miembros
TOleauto que son arrays; simplemente, recibo el error
DISP_E_MEMBERNOTFOUND. He buscado en el prg de la clase alguna solución,
pero tampoco la encuentro.
Algo que me sería de mucha utilidad sería poder obtener ya sea en un
array o en una cadena, los handle a cada miembro de un objeto TOleauto o
bien el nombre de cada miembro, ya que en el debugger no es posible
visualizar el contenido interno de esta clase. ¿es esto posible?
Pregunta aparte, ¿esta clase está documentada en xHarbour Language
Reference Guide? Porque si es así, con ésta y con el resto de clases,
merecería la pena adquirirlo.
Saludos.
TOleAuto y Arrays
Ángel,
> Ignacio, por más que lo intento no consigo acceder a los miembros TOleauto
> que son arrays; simplemente, recibo el error DISP_E_MEMBERNOTFOUND. He
> buscado en el prg de la clase alguna solución, pero tampoco la encuentro.
Lo primero que deberías verificar es si realmente es un array o una
"colección OLE". Lo más normal es que se trate de una "colección OLE", que
están perfectamente soportadas. Pero cada uno de los elementos de la
colección no es un valor simple, sino otro objeto OLE. Por lo tanto, para
ver su valor hay que utilizar alguna de sus propiedades. P.ej., supongamos
que tienes un objeto 'oSheet' que es una hoja de excel. Este objeto tiene
una propiedad 'Cells' que es el conjunto de celdillas de la hoja.
Aparentemente es una array de 2 dimensiones, pero no lo es; es una
"colección OLE". Para obtener sus valores, no puedes simplemente poner:
oSheet:Cells( 1, 1 )
sino que deberás utilizar la propiedad 'Value' de cada celda. Así:
oSheet:Cells( 1, 1 ):Value
En el caso de arrays de valores simples, sé que también están soportados,
pero yo personalmente no los he utilizado y no te lo puedo asegurar.
> Algo que me sería de mucha utilidad sería poder obtener ya sea en un array
> o en una cadena, los handle a cada miembro de un objeto TOleauto o bien el
> nombre de cada miembro, ya que en el debugger no es posible visualizar el
> contenido interno de esta clase. ¿es esto posible?
No, me temo que no. La clase TOleAuto maneja los objetos OLE de forma
dinámica (late binding) lo que significa que resuelve el nombre de la
propiedad o método que invoques en el mismo momento de hacerlo. No hay
ninguna lista de propiedades "a priori" que se pueda consultar.
> Pregunta aparte, ¿esta clase está documentada en xHarbour Language
> Reference Guide? Porque si es así, con ésta y con el resto de clases,
> merecería la pena adquirirlo.
Personalmente no sé si está documentada o no. Pero sí es cierto que esta
clase es original de xHarbour, no de Xailer.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Ignacio, por más que lo intento no consigo acceder a los miembros TOleauto
> que son arrays; simplemente, recibo el error DISP_E_MEMBERNOTFOUND. He
> buscado en el prg de la clase alguna solución, pero tampoco la encuentro.
Lo primero que deberías verificar es si realmente es un array o una
"colección OLE". Lo más normal es que se trate de una "colección OLE", que
están perfectamente soportadas. Pero cada uno de los elementos de la
colección no es un valor simple, sino otro objeto OLE. Por lo tanto, para
ver su valor hay que utilizar alguna de sus propiedades. P.ej., supongamos
que tienes un objeto 'oSheet' que es una hoja de excel. Este objeto tiene
una propiedad 'Cells' que es el conjunto de celdillas de la hoja.
Aparentemente es una array de 2 dimensiones, pero no lo es; es una
"colección OLE". Para obtener sus valores, no puedes simplemente poner:
oSheet:Cells( 1, 1 )
sino que deberás utilizar la propiedad 'Value' de cada celda. Así:
oSheet:Cells( 1, 1 ):Value
En el caso de arrays de valores simples, sé que también están soportados,
pero yo personalmente no los he utilizado y no te lo puedo asegurar.
> Algo que me sería de mucha utilidad sería poder obtener ya sea en un array
> o en una cadena, los handle a cada miembro de un objeto TOleauto o bien el
> nombre de cada miembro, ya que en el debugger no es posible visualizar el
> contenido interno de esta clase. ¿es esto posible?
No, me temo que no. La clase TOleAuto maneja los objetos OLE de forma
dinámica (late binding) lo que significa que resuelve el nombre de la
propiedad o método que invoques en el mismo momento de hacerlo. No hay
ninguna lista de propiedades "a priori" que se pueda consultar.
> Pregunta aparte, ¿esta clase está documentada en xHarbour Language
> Reference Guide? Porque si es así, con ésta y con el resto de clases,
> merecería la pena adquirirlo.
Personalmente no sé si está documentada o no. Pero sí es cierto que esta
clase es original de xHarbour, no de Xailer.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info