texto - VB6 Cast Expression
operador like en visual basic (6)
¿Cuál es la expresión equivalente al CType de VB.NET en Visual Basic 6?
Ctype () Yo creo. El C * (CDate (), CStr (), etc.) son remanentes en su mayor parte.
Digamos que tiene un objeto de ChildClass (niño) que quiere lanzar a BaseClass. Tu hiciste esto:
Dim base As BaseClass
Set base = child
Debido a la forma en que VB6 maneja la seguridad del tipo de tiempo de compilación, puede hacerlo sin ninguna sintaxis adicional.
Nota: Dado que todos los demás parecen haber mencionado CType
, es posible que haya malinterpretado la pregunta por completo, ¡y me disculpo si ese es el caso!
Hay una cantidad de ellos dependiendo del tipo al que está lanzando
cint() Cast to integer
cstr() cast to string
clng() cast to long
cdbl() cast to double
cdate() cast to date
También tiene conversión implícita, así que puedes hacer esto myString = myInt
Parece que algunos carteles han leído mal la pregunta, por lo que trataré de aclarar las cosas reformulando la pregunta y resumiendo las respuestas correctas dadas hasta ahora.
Problema
Quiero transmitir datos de un tipo a otro tipo. En mi código VB.NET usaría
CType
para hacer esto. Sin embargo, cuando intento usarCType
en VB6, aparece el error "Sub o función no definida". Entonces, ¿cómo puedo realizar moldes en VB6 siCType
no funciona?
Solución
Como habrás descubierto, VB6 no tiene una función CType
como VB.NET. Sin embargo, las otras funciones de conversión (aquellas que tienen nombres que comienzan con C
), que puede haber encontrado en el código VB.NET, como CInt y CStr, existen en VB6, y puede usarlas para convertir ay desde tipos de objetos No hay una función incorporada para convertir un objeto de una clase en un objeto de otra clase. Tenga en cuenta que VB6, a diferencia de VB.NET, no admite la herencia. Una clase en VB6 puede implementar una o más interfaces, pero no puede heredar de otra clase. Sin embargo, si la clase de un objeto implementa más de una interfaz, puede usar la instrucción Set
para convertir un objeto a una de las interfaces que admite (como Ant sugirió). A continuación, se proporciona una versión extendida del ejemplo del código de Ant:
Ejemplo: Lanzar una clase a una de sus interfaces compatibles
Dim base As BaseClass
Dim child As ChildClass ''implements BaseClass''
Set child = New ChildClass
Set base = child ''"Cast" child to BaseClass''
Funciones de conversión de tipo incorporadas en VB6
A continuación se incluye una lista completa de las funciones de conversión incorporadas disponibles en VB6, tomadas directamente del archivo de Ayuda de VB6.
CBool
Devoluciones
Boolean
Descripción
Convierta la expresión a Boolean.
Rango para el argumento de expresión :
Cualquier cadena válida o expresión numérica.
CByte
Devoluciones
Byte
Descripción
Convierte la expresión a Byte.
Rango para el argumento de expresión :
0 a 255
CCur
Devoluciones
Currency
Descripción
Convierte expresión a Moneda.
Rango para el argumento de expresión :
-922,337,203,685,477.5808 a 922,337,203,685,477.5807.
CDate
Devoluciones
Date
Descripción
Convierta expresión a Fecha.
Rango para el argumento de expresión :
Cualquier expresión de fecha válida.
CDbl
Devoluciones
Double
Descripción
Convierta la expresión a Doble.
Rango para el argumento de expresión :
-1.79769313486232E308 a -4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos.
CDec
Devoluciones
Decimal
Descripción
Convierta la expresión a Decimal.
Rango para el argumento de expresión :
+/- 79,228,162,514,264,337,593,543,950,335 para números a escala cero, es decir, números sin decimales. Para números con 28 lugares decimales, el rango es +/- 7.9228162514264337593543950335. El número distinto de cero posible más pequeño es 0.0000000000000000000000000001.
CInt
Devoluciones
Integer
Descripción
Convierte la expresión a Long.
Rango para el argumento de expresión :
-32,768 a 32,767; las fracciones son redondeadas
CLng
Devoluciones
Long
Descripción
Convierte la expresión a Long.
Rango para el argumento de expresión :
-2,147,483,648 a 2,147,483,647; las fracciones son redondeadas
CSng
Devoluciones
Single
Descripción
Convierta la expresión a Single.
Rango para el argumento de expresión :
-3.402823E38 a -1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos.
CStr
Devoluciones
String
Descripción
Convierta la expresión a Cadena.
Rango para el argumento de expresión :
Las devoluciones para CStr dependen del argumento de expresión.
CVar
Devoluciones
Variant
Descripción
Convierte expresión a Variante.
Rango para el argumento de expresión :
El mismo rango que el Doble para numéricos. El mismo rango que String para no numéricos.
Las conversiones no son "moldes" en absoluto. Por ejemplo, intente:
MsgBox CLng(CBool(3&))
El resultado es -1, no 3. Esto se debe a que esas son funciones de conversión , no moldes. ¡El lenguaje es importante!
Los moldes ya mencionados son correctos, pero si el tipo es un Objeto, entonces debes usar "Establecer" en VB6, como por ejemplo:
If IsObject(Value) Then
Set myObject = Value '' VB6 does not have CType(Value, MyObjectType)
Else
myObject = Value '' VB6 does not have CType(Value, MyObjectType)
End If
Eso, por supuesto, depende del tipo al que estás enviando. Casi todas las clases de usuarios son objetos, así como Collection, Dictionary y muchos otros. Los tipos incorporados, como long, integer, boolean, etc. obviamente no son objetos.