none
DirectCast en VB6 para convertir objetos RRS feed

  • Pregunta

  • Hola! Estoy pasando una aplicación de VS2005 a VB6, y tengo unas líneas donde uso DirectCast para convertir un tipo de objeto a otro. El problema es que la versión de VB6 no contempla ni la función DirectCast ni la función CType para conversión de tipos entre objetos, por lo que necesito otro método para hacerlo. Alguna idea?

    Gracias de antemano.


    Sara

    miércoles, 11 de abril de 2012 7:57

Respuestas

  • Gracias por tus respuestas. La forma de hacerlo, es, digamos, por partes.

    'Módulo 1
    Global miVarGeoApp As TipoAppGIS
    Global miVarMapWin As TipoMapWindow
    'Módulo de clase
    Set miVarMapWin = miVarGeoApp.atributo1
    'Módulo 2
    Public Property Get MV() As TipoMapGIS
    MV = miVarMapWin.atributo2
    End Property
    

    Algo parecido a esto.



    Sara

    • Marcado como respuesta Sara23SQL miércoles, 25 de abril de 2012 7:38
    miércoles, 25 de abril de 2012 7:38

Todas las respuestas

  • En general, no tiene mucho sentido. El DirectCast normalmente se usa en VB.NET para convertir un objeto de una clase madre en una de sus clases hijas. Pero en VB6 no hay herencia de clases propiamente dicha (únicamente hay herencia de interfaz), por lo que no se puede presentar esa situación de tener que convertir de clase madre a clase hija.
    miércoles, 11 de abril de 2012 8:31
  • Gracias por tu respuesta!

    El proyecto que tengo usa librerías externas, es decir, llama a funciones de un programa externo (tipo GIS) y los objetos con los que quiero hacer DirectCast pertenecen a dicho sw. Se aplicaría tu razonamiento igualmente? Gracias de nuevo.


    Sara

    jueves, 12 de abril de 2012 7:38
  • Habría que ver con más detalle cuál es la conversión que tienes en mente, pero en principio seguiría aplicándose el mismo criterio. Es decir, la razón de hacer un DirectCast sería para convertir un objeto de una clase tuya a una clase de la librería, donde una de ellas hereda de la otra. Pero con VB6, la librería será un objeto COM y no puedes hacer herencia de clases desde él, por lo que no parece ser que pueda plantearse esta situación.
    jueves, 12 de abril de 2012 8:01
  • Gracias por tus respuestas. La forma de hacerlo, es, digamos, por partes.

    'Módulo 1
    Global miVarGeoApp As TipoAppGIS
    Global miVarMapWin As TipoMapWindow
    'Módulo de clase
    Set miVarMapWin = miVarGeoApp.atributo1
    'Módulo 2
    Public Property Get MV() As TipoMapGIS
    MV = miVarMapWin.atributo2
    End Property
    

    Algo parecido a esto.



    Sara

    • Marcado como respuesta Sara23SQL miércoles, 25 de abril de 2012 7:38
    miércoles, 25 de abril de 2012 7:38