Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

¿Cómo Conocer La Clase De Un Objeto?

¿Cómo Conocer La Clase De Un Objeto?
Artículo
Responder citando    Descargar mensaje  
Mensaje ¿Cómo Conocer La Clase De Un Objeto? 
 
Pues eso. Supongamos que tienes un textbox que llama "Apellidos".

¿Cómo saber que es un textbox en tiempo de ejecución?

Algo así:
dim Apellidos as new TextBox

print que_es(Apellidos)

end

public function que_es(o as objeto) as string
    dim clase as string
         clase=Propiedad_o_metododesconocidoquemedicelaclase
return clase
end
 


El resultado debería ser "TextBox".

¿Alguien sabe cómo?
Se que existe la sentencia if o IS TextBox then, etc. etc. pero no quier recorrerme todas las clases existentes, quiero saber de donde saca IS esa información...

Saludos.



 
última edición por shordi el Miercoles, 09 Noviembre 2016, 20:06; editado 1 vez 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Miercoles, 09 Noviembre 2016, 20:02 ]
 


¿Cómo Conocer La Clase De Un Objeto?
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: ¿Cómo Conocer La Clase De Un Objeto? 
 
Shordi:

Si exisite:

public function que_es(o as objeto) as string
dim clase as string
clase=Upper(Object.Class(o).name)
return clase
end


Lo pongo todo en mayúscula con upper, porque si necesito hacer comparaciones con textos, no la lio y siempre comparo con todo en mayusculas.

Saludos



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Miercoles, 09 Noviembre 2016, 20:16 ]
Responder citando    Descargar mensaje  
Mensaje Re: ¿Cómo Conocer La Clase De Un Objeto? 
 
Ok. Gracias Julio.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Miercoles, 09 Noviembre 2016, 21:33 ]
Responder citando    Descargar mensaje  
Mensaje Re: ¿Cómo Conocer La Clase De Un Objeto? 
 
Solo por curiosidad: es posible conocer el nombre de la Clase de un objeto leyendo directamente a el 5° miembro de la Estructura CLASS, contenida en el file header " /....../main/gbx/gbx_class.h " de los fuentes de Gambas:    

Public Sub Form_Open()

  Dim p1, p2 As Pointer
  
   p1 = Object.Address(TextBox1)
  
' Accede a la Estructura "CLASS":
   p2 = Pointer@(p1)

' Accede al miembro "char * name" y lo dereferencia:
   TextBox1.Text = String@(Pointer@(p2 + IIf(SizeOf(gb.Pointer) = 8, 24, 16)))

End




 
última edición por vuott el Jueves, 10 Noviembre 2016, 00:53; editado 1 vez 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Jueves, 10 Noviembre 2016, 00:40 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron