Tipo variante

En ciencias de la computación variante es un tipo de dato utilizados por ciertos lenguajes de programación, particularmente en Visual Basic, OCaml, y C++ cuando se usa el Component Object Model.

Información

En Visual Basic (y Visual Basic para Aplicaciones) el tipo de dato variante es una unión etiquetada que puede ser usada para representar todos los otros tipos de datos (por ejemplo, Entero, Flotante, Doble, Etc.) excepto con tipos cadena de longitud fija y tipos de datos Record. En Visual Basic toda variable no declarada explícitamente o cuyo tipo no es declarado explícitamente, es tomado como una variante.

Si bien no se recomienda el uso de variantes no declarados explícitamente, pueden ser de utilidad cuando el tipo de datos necesarios sólo puede ser conocido en tiempo de ejecución, cuando se espera que el tipo de datos puedan variar, o cuando se desean parámetros opcionales y matrices de parámetros. De hecho, los lenguajes con un sistema de tipo dinámico a menudo tienen variante como el único tipo de dato disponible para variables.

Aunque notoriamente carente de eficiencia, las variantes se usan comúnmente como parámetros para objetos COM debido a su flexibilidad. Usted puede pensar en una variante como una especie de contenedor, que puede contener una variable de cualquier tipo de datos, numéricos, de cadena, o incluso todo un arsenal. Esto simplifica el proceso de llamar a procedimientos en un COM Object Server, ya que hay poca necesidad de preocuparse por la gran cantidad de tipos de datos posibles para cada parámetro.

Formato

Una variable de tipo variante, llamada "Variant" en inglés como se denomina en Visual Basic, necesita 16 bytes de almacenamiento y su distribución es la siguiente.

NombreOffsetTamañoDescripción
iType02El valor retornado por VarType; especifica qué tipo de datos contiene la variante.
reserved26Bytes reservados; debe ser cero.
lLen8Arriba de 8Puntero a la dirección que contiene los datos.

Tipos

Unos pocos ejemplos de variantes que uno puede encontrar en el seguimiento de Visual Basic, En otros idiomas otros tipos de variantes se pueden utilizar también.

Tipo de variableBytes de datosTipos C/C++Nombre de tipo
0Empty1
1Null2
102A000A80HRESULT (long int)Error
1080020004HRESULT (long int)Missing3
172ABYTE (unsigned char)Byte
11FFFFVARIANT_BOOL (short int)Boolean
22A00short intInteger
32A000000long intLong
400002842floatSingle
50000000000004540doubleDouble
6A068060000000000CY structureCurrency
700000000C0D5E140DATE (double)Date
8xxxxxxxxBSTR (wchar_t pointer)String
900000000IUnknown pointerNothing4
9xxxxxxxxIUnknown pointerObject reference5

Tipo variante en distintos lenguajes

Visual Basic

En el lenguaje Visual Basic el tipo de dato variante es manejado internamente por el compilador, por lo que no es necesario insertar los datos correspondientes (y requeridos) en el tipo de dato variante, tampoco es necesario declarar explícitamente el tipo de dato en el que se trabajará.

 Dim Variante as Variant
 Dim Variante2
 Variante2 = 666
 Variante = 999 ' Cualquier valor!

Pauscal

En el lenguaje de programación Pauscal el tipo de dato variante solo puede ser utilizado de forma explícita, a diferencia de Visual Basic el compilador de Pauscal no hace "el trabajo sucio" por el programador, por lo que es necesario trabajarlo.

' Declaramos el tipo de dato variant.
Estruc Variant,_          ' Estructura Variant.
       iType:Word,_       ' El tipo de dato.
       Reserved:Entero,_  ' Reservado, debe ser cero.
       iLen:Entero        ' Puntero al dato.
' Fin de la declaración.

Var Variante:Variant
Variante.iType = 8 ' Tipo de dato cadena.
Variante.iLen = CadPtr("Hola que tal!") ' Establecemos el puntero a la cadena "Hola que tal!".

Delphi

En Delphi una variable de tipo variante se declara de la siguiente manera:

 var A:variant;

Referencias

PowerBasic tipo de dato variante

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.