Share to: share facebook share twitter share wa share telegram print page

 

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.

Nombre Offset Tamaño Descripción
iType 0 2 El valor retornado por VarType; especifica qué tipo de datos contiene la variante.
reserved 2 6 Bytes reservados; debe ser cero.
lLen 8 Arriba de 8 Puntero 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 variable Bytes de datos Tipos C/C++ Nombre de tipo
0 Empty1
1 Null2
10 2A000A80 HRESULT (long int) Error
10 80020004 HRESULT (long int) Missing3
17 2A BYTE (unsigned char) Byte
11 FFFF VARIANT_BOOL (short int) Boolean
2 2A00 short int Integer
3 2A000000 long int Long
4 00002842 float Single
5 0000000000004540 double Double
6 A068060000000000 CY structure Currency
7 00000000C0D5E140 DATE (double) Date
8 xxxxxxxx BSTR (wchar_t pointer) String
9 00000000 IUnknown pointer Nothing4
9 xxxxxxxx IUnknown pointer Object 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

Kembali kehalaman sebelumnya


Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9