necesito funcion!!

09/04/2012 - 12:00 por Bernardo Manzano Salazar | Informe spam
hola!
Le he dado mil vueltas y no lo consigo. Necesito una función para una
clase que le pase el nombre de la propiedad y devuelva el tipo de dato
que es.
Gracias.

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua
09/04/2012 - 14:28 | Informe spam
"Bernardo Manzano Salazar" escribió en el mensaje
news:
hola!
Le he dado mil vueltas y no lo consigo. Necesito una función para una
clase que le pase el nombre de la propiedad y devuelva el tipo de dato
que es.

Hola,

En VB6:

' // Class1
Public f As Double
Public s As String
Private x As Integer

Public Property Get i() As Integer
i = x
End Property

Public Property Let i(v As Integer)
x = v
End Property

' --
' Esta es la funcion:
Public Function getType(propName As String) As String
Dim r As Variant
r = CallByName(Me, propName, VbGet)
getType = TypeName(r)
End Function

Y esta es una comprobación de su funcionamiento:

set x = New Class1
? x.getType("i")
Integer
? x.getType("f")
Double
? x.getType("s")
String

Alternativamente, puedes escribir una funcion global:

Public Function getType(unObjeto As Object, propName As String) As String
Dim r As Variant
r = CallByName(unObjeto, propName, VbGet)
getType = TypeName(r)
End Function

Lo que sí he echado en falta toda la vida es una función que reciba una
cadena con el nombre de una clase y te devuelva una instancia de esa clase.
Todos los lenguajes "modernos" (incluido VB.Net, que alguna virtud debía de
tener) la tienen. El viejo VB6 no.


Salud!
Respuesta Responder a este mensaje
#2 Leonardo Azpurua
09/04/2012 - 14:36 | Informe spam
"Bernardo Manzano Salazar" escribió en el mensaje
news:
hola!
Le he dado mil vueltas y no lo consigo. Necesito una función para una
clase que le pase el nombre de la propiedad y devuelva el tipo de dato
que es.

Hola,

Esta es la misma función con un poco de tratamiento de errores añadido:

Public Function getType(propName As String) As String
Dim r As Variant
On Error Resume Next
r = CallByName(Me, propName, VbGet)
If Err.Number <> 0 Then
r = CallByName(Me, propName, VbMethod)
End If
getType = TypeName(r)
End Function

Además de para las propiedades y miembros de datos, puede usarse para
cualquier función que no requiera argumentos.

Si se produce un error, el valor devuelto es "Empty".

Suerte!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida