¿Cómo puedo obtener el tipo de una variable utilizando VBScript?

6 Comentarios

  1. 66

    Es VarType lo que usted necesita?

    Devuelve un valor que indica el subtipo de una variable.

    +--------------+-------+---------------------------------------------+
    |   Constant   | Value |                 Description                 |
    +--------------+-------+---------------------------------------------+
    | vbEmpty      |     0 | Empty (uninitialized)                       |
    | vbNull       |     1 | Null (no valid data)                        |
    | vbInteger    |     2 | Integer                                     |
    | vbLong       |     3 | Long integer                                |
    | vbSingle     |     4 | Single-precision floating-point number      |
    | vbDouble     |     5 | Double-precision floating-point number      |
    | vbCurrency   |     6 | Currency                                    |
    | vbDate       |     7 | Date                                        |
    | vbString     |     8 | String                                      |
    | vbObject     |     9 | Automation object                           |
    | vbError      |    10 | Error                                       |
    | vbBoolean    |    11 | Boolean                                     |
    | vbVariant    |    12 | Variant (used only with arrays of Variants) |
    | vbDataObject |    13 | A data-access object                        |
    | vbDecimal    |    14 | Decimal Value                               |
    | vbByte       |    17 | Byte                                        |
    | vbLongLong   |    20 | LongLong integer (64 bit)                   |
    | vbArray      |  8192 | Array                                       |
    +--------------+-------+---------------------------------------------+

    La función VarType nunca devuelve el valor de la Matriz por sí misma. Es
    siempre se añade algún otro valor para indicar una matriz de una
    tipo en particular. El valor de la Variante sólo se devuelve cuando se ha
    se han agregado para el valor de la Matriz para indicar que el argumento de la
    Función VarType es una matriz. Por ejemplo, el valor devuelto por una
    matriz de números enteros se calcula como 2 + 8192, o 8194. Si un objeto tiene
    una propiedad predeterminada, VarType (objeto) devuelve el tipo de defecto
    propiedad.

    • VarType(index) devuelve 8. ¿Qué significa esto.
    • 8 = vbString – Indica una cadena (Desde el enlace en mi respuesta)
    • Saludos. El sentido común debería haber dicho para comprobar que antes de preguntar. Lo siento. +Rep
    • donde para comprobar que el número de stands para qué?
    • la página vinculada en vartype tiene la asignación.
    • y 14 de tipo es vbDecimal, que es la falta de un de de documentación por alguna razón
    • gracias, agregó.
    • Tenga en cuenta que no todos los dialectos de la zona VB apoyo de todos los tipos. En el caso de VBScript (como se pide en la pregunta), sólo el 0 hasta el 9, 11 y 17 parece ser utilizada. Y matrices aparentemente siempre regreso 8204 («la matriz de la variante»), no importa qué valores se ponen en ellos.
    • Esta respuesta es parcialmente incorrecta de Asp Clásico. Los enlaces de referencia para VBA. El derecho de referencia es este. Tenga en cuenta que vbLongLong, vbDecimal, no están en ella: no se admiten en Classic Asp VBScript como lo que yo sé. (Yo tenía la intención de editar sólo esta respuesta, pero me di cuenta de que habría sido una reversión del autor propias ediciones.)

  2. 25

    Si quieres obtener el nombre del tipo de un objeto se asigna a una variable con Set, puede utilizar TypeName lugar.

    Class SomeClass
        '' empty class
    End Class
    
    Dim x
    Set x = New SomeClass
    WScript.Echo TypeName(x)  '' displays "SomeClass"
  3. 7

    Tmdean‘s respuesta también se trabaja para obtener el Nombre del Tipo (no es un entero) de (casi) todos los demás tipos de variables (por http://msdn.microsoft.com/en-us/library/ie/y58s1cs6%28v=vs.84%29.aspx)

    dim i,s,a
    i = 1
    s = "Hello world"
    a = split("Hello World"," ")
    
    WScript.Echo TypeName(i) 'Displays "Integer"
    WScript.Echo TypeName(s) 'Displays "String"
    WScript.Echo TypeName(a) 'Displays "Variant()"
    • Es que una respuesta o una observación?
    • No entiendo la pregunta. El ejemplo no funciona en la realidad para alguien?
  4. 3
    Dim a, b, c, d, e, f
    a = 10
    b = "text"
    c = Split("John Doe,Jane Smith,Dick Tracy", ",")
    d = 1.2
    e = Null
    f = True
    MsgBox "'a' is " & fVarType(a) & vbNewLine & _
    "'b' is " & fVarType(b) & vbNewLine & _
    "'c' is " & fVarType(c) & vbNewLine & _
    "'d' is " & fVarType(d) & vbNewLine & _
    "'e' is " & fVarType(e) & vbNewLine & _
    "'f' is " & fVarType(f) & vbNewLine & _
    "'g' is " & fVarType(c(0))
    Function fVarType(x)
    Const ArrayCode = 8192
    Dim y
    y = VarType(x)
    If y < ArrayCode Then
    fVarType = fGetType(VarType(x))
    Else
    fVarType = "vbArray with " & fGetType(VarType(x)- ArrayCode) & " elements"
    End If  
    End Function
    Function fGetType(vType)
    Select Case vType   
    Case 0 fGetType = "vbEmpty"
    Case 1 fGetType = "vbNull"
    Case 2 fGetType = "vbInteger"
    Case 3 fGetType = "vbLong"
    Case 4 fGetType = "vbSingle"
    Case 5 fGetType = "vbDouble"
    Case 6 fGetType = "vbCurrency"
    Case 7 fGetType = "vbDate"
    Case 8 fGetType = "vbString"
    Case 9 fGetType = "vbObject"
    Case 10 fGetType = "vbError"
    Case 11 fGetType = "vbBoolean"
    Case 12 fGetType = "vbVariant"
    Case 13 fGetType = "vbDataObject"
    Case 14 fGetType = "vbDecimal"
    Case 17 fGetType = "vbByte"
    Case Else fGetType = "undetected"
    End Select
    End Function
  5. 0
    Dim TypeDictionary
    Set TypeDictionary = CreateObject("Scripting.Dictionary")
    TypeDictionary.Add 0, "vbEmpty"
    TypeDictionary.Add 1, "vbNull"
    TypeDictionary.Add 2, "vbInteger"
    TypeDictionary.Add 3, "vbLong"
    TypeDictionary.Add 4, "vbSingle"
    TypeDictionary.Add 5, "vbDouble"
    TypeDictionary.Add 6, "vbCurrency"
    TypeDictionary.Add 7, "vbDate"
    TypeDictionary.Add 8, "vbString"
    TypeDictionary.Add 9, "vbObject"
    TypeDictionary.Add 10, "vbError"
    TypeDictionary.Add 11, "vbBoolean"
    TypeDictionary.Add 12, "vbVariant"
    TypeDictionary.Add 13, "vbDataObject"
    TypeDictionary.Add 17, "vbByte"
    Public Function GetType(argument)
    GetType = TypeDictionary.Item(VarType(argument))
    End Function

    Esta versión invierte más esfuerzo configurar el diccionario, pero, a continuación, busca cualquier tipo en un cheque(crucemos los dedos) en lugar de la comprobación de cada tipo de cada vez.

    equivalente código de JScript(hipotético, pues JScript ha typeof, y carece de muchos de vb tipos):

    var TypeDictionary = {
    0: 'vbEmpty',
    1: 'vbNull',
    2: 'vbInteger',
    3: 'vbLong',
    4: 'vbSingle',
    5: 'vbDouble',
    6: 'vbCurrency',
    7: 'vbDate',
    8: 'vbString',
    9: 'vbObject',
    10: 'vbError',
    11: 'vbBoolean',
    12: 'vbVariant',
    13: 'vbDataObject',
    17: 'vbByte'
    };
    var GetType = function() {
    return TypeDictionary[arguments[0]];
    };

Dejar respuesta

Please enter your comment!
Please enter your name here