Recuerdo que en C/C++ se podia forzar una conversion de tipo
de la forma:
long a;
int b;
a = (long)b;
Pero no encuentro en la ayuda la forma de hacer lo mismo en VB,
pero con OBJETOS de una clase hecha por mi (no con tipos
integrales)
¡Si, ya se que VB lo hace mas o menos automagicamente! ;-)
pero la cuestion es que no dejo de obtener:
'Error 13: No coinciden los tipos'
Vereis, tengo dos funciones intermedias que leen objetos
guardados en una Collection. Collection admite cualquier
tipo (Variant), pero la funcion intermedia conoce el tipo
real, de modo que lo devuelve As myClass.
El Objeto devuelto lo almaceno (con Set) en una variable
declarada As myClass: Y es aqui donde me da el error 13.
Si declaro la variable As Variant (o As Object) NO da
error al asignar, pero pierdo la posibilidad de desplegar
la lista de propiedades y metodos.
Espero haberme explicado con claridad, pero como un ej vale
mas que mil palabras...
Dim hItem as Variant 'Handle al Item
Dim myItem As Variant 'myClass
'Dim myItem As Object 'myClass
...
Set myItem = anyObj.GetItem(hItem)
myItem.myProperty = AnyValue
Set myItem = Nothing
...
Public Function GetItem(hItem As Variant) As myClass
Set GetItem = myTree.GetInfo(hItem) 'GetInfo() As Variant
End Function
.
¿Donde me estoy equivocando?
¿Seria posible algo como?:
Set myItem = (myClass)anyObj.GetItem(hItem)
¿o mejor?:
Set GetItem = (myClass)Tree.GetInfo(hItem)
Muchas gracias por adelantado.
Un abrazo.
--
______________________________________________________________
F. Javier Garrido F. (R)JA.GAR. SOFT MINIX,Linux,DJGPP User.
mailto:garr...@arrakis.es http://www.arrakis.es/~garridof
"The light that burns twice as bright, burns half as long ...
... and you have burned so very, very brightly, Roy."
TYRREL from Blade Runner
Tengo la sospecha de que el problema está en la función GetItem, cuando
asignas myTree.GetInfo (variant) a GetItem (no en la asignación que realizas
en el nivel superior, que es correcta).
Si redeclaras myTree.GetInfo(hItem) As Object, el problema podría
desaparecer (aunque no estoy seguro: sé que le puedes asignar instancias de
cualquier clase a una variable de tipo Object, pero no estoy seguro de que
lo inverso sea legal.
Suerte!
Debug.Print TypeName(myTree.GetInfo(hItem))
Otro problema puede ser que estes usando dos versiones diferentes, no
compatibles, de myClass en el myTree y en el programa (que tengan el mismo
nombre no significa que sean lo mismo).
--
Eduardo A. Morcillo
http://www.domaindlx.com/e_morcillo