switch for example classic asp asp-classic vbscript

asp classic - for - Obtener el tipo de variable en VBScript



submit asp classic (6)

¿Cómo obtengo el tipo de variable usando VBScript?


¿ VarType es lo que necesitas?

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 Array por sí mismo. Siempre se agrega a algún otro valor para indicar una matriz de un tipo particular. El valor de Variant solo se devuelve cuando se ha agregado al valor de Array para indicar que el argumento de la función VarType es una matriz. Por ejemplo, el valor devuelto para una matriz de enteros se calcula como 2 + 8192 u 8194. Si un objeto tiene una propiedad predeterminada, VarType (objeto) devuelve el tipo de su propiedad predeterminada.


La respuesta de Tmdean también funciona para obtener el Nombre del Tipo (no un número entero) de (casi) todos los otros 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()"


Si desea obtener el tipo de nombre de un objeto asignado a una variable con Set , puede usar TypeName en TypeName lugar.

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


vartype es apropiado ...

Dim x x=123 msgbox VarType(x)


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 configurando el diccionario, pero luego busca cualquier tipo en una comprobación (dedos cruzados) en lugar de verificar cada tipo individual cada vez.

código JScript equivalente (hipotético, ya que JScript tiene typeof y carece de muchos tipos de vb):

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]]; };


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