Page 1 of 1
Propiedades de un Objeto!!
Posted: Tue Jun 05, 2007 6:37 pm
by danielr cyberia®
Saludos Cordiales Colegas!!!
Es posible saber las propiedades de un objeto? o por lo menos sus variables contenidas!!
Ej: oObj:cCadena:="Hola"
oObj:nValor :="1234"
oObj:aData :={"BRASIL","ALEMANIA","PORTUGAL"}
oObj:lTrue :=.F.
oObj:dFecha :=DATE()
Y entonces alguna funcion que me muestre lo que tiene contenido oObj
Ej: View(oObj) o algo asi???
Se podra???
Posted: Tue Jun 05, 2007 6:54 pm
by danielr cyberia®
Saludos Cordiales Colegas!!
Jejejeje ya consegui algo!!
Code: Select all
PROCE MAIN()
local aObj := aOData(oObj)
ViewArray(aObj)
RETURN
Pero hay una propiedad de aOData que se llama eho! pero no se que hace ni como funciona! si saben algo me avisa!! en el arreglo solo aparencen las variables! me gustaria que mostraran sus valores!! si saben algo!! me avisan!!!
La sentencia es aOData.eho: !!!
Posted: Tue Jun 05, 2007 7:06 pm
by Antonio Linares
Daniel,
Tanto en Clipper como en Harbour, los objetos estan contenidos en arrays (son arrays con sus datos, más un puntero a su clase, para localizar los métodos), por lo que puedes inspeccionar un objeto así:
Code: Select all
for n = 1 to Len( oObjeto )
MsgInfo( oObjeto[ n ] )
next
Posted: Tue Jun 05, 2007 8:20 pm
by danielr cyberia®
Saludos Cordiales Colegas!!
Antono! Muchas Gracias por tu atención
Me parece bien lo que planteas! pero asi solo me muestra los valores de las variables! sin decirme a quien pertenece esos valores! y el otro metodo solo me trae las variables que al parecer no esten vacias o nulas!
Imaginate entonces que hice lo siguiente
Code: Select all
PROCE MAIN()
LOCAL aObj:=aOData(oDp),I,aData:={}
FOR I=1 TO LEN(aObj)
AADD(aData,{aObj[I],oDp[I]})
NEXT I
ViewArray(aData)
RETURN
Pero asi hay disparidad entre la cantidad de LEN(aObj) con LEN(oDp) porq aObj esta contenidad de variables que al parecer no esten vacias o nulas y oDp cuanta a todas! Creo que es eso!! jeje!
De todas maneras lo que debo hacer es un listado de las variables con sus valores que esten contenidas en el objeto! como se hara eso?!
Gracias por Todo!!!!
Posted: Tue Jun 05, 2007 8:38 pm
by Antonio Linares
Daniel,
Se hace así:
Code: Select all
function Main()
local oError := ErrorNew()
local aInfo := __ClassSel( __ClassH( oError ) )
local n
for n = 1 to Len( aInfo )
MsgInfo( aInfo[ n ] )
next
return nil
Los nombres que empiezan por "_" son datos asignables, así para diferenciar una DATA de un método se sabe porque existe el mensaje que empieza por "_". El siguiente paso es enviar el mensaje al objeto dado el nombre del mensaje.