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