Подтвердить что ты не робот

Получить тип переменной в VBScript

Как получить тип переменной с помощью VBScript?

4b9b3361

Ответ 1

Является VarType, что вам нужно?

Возвращает значение, указывающее подтип переменной.

+--------------+-------+---------------------------------------------+
|   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                                       |
+--------------+-------+---------------------------------------------+

Функция VarType никогда не возвращает значение для массива самостоятельно. Это всегда добавляется к некоторому другому значению, чтобы указать массив особый тип. Значение для Variant возвращается только тогда, когда оно был добавлен в значение для массива, чтобы указать, что аргумент Функция VarType - это массив. Например, значение, возвращаемое для массив целых чисел вычисляется как 2 + 8192 или 8194. Если объект имеет свойство по умолчанию, VarType (object) возвращает тип его значения по умолчанию свойство.

Ответ 2

Если вы хотите получить имя типа объекта, назначенного переменной с помощью Set, вы можете вместо этого использовать TypeName.

Class SomeClass
    '' empty class
End Class

Dim x
Set x = New SomeClass
WScript.Echo TypeName(x)  '' displays "SomeClass"

Ответ 3

Ответ Tmdean также работает, чтобы получить имя типа (не целое число) (почти) всех других типов переменных (за 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()"

Ответ 4

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

vartype подходит...

Dim x
x=123
msgbox VarType(x)

Ответ 6

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

Эта версия инвестирует больше усилий, создавая словарь, но затем просматривает любой тип в одной проверке (скрещенными пальцами), а не проверяет каждый отдельный тип каждый раз.

эквивалентный код JScript (гипотетический, поскольку JScript имеет typeof и не хватает многих типов 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]];
};