webentwicklung-frage-antwort-db.com.de

Rufen Sie den Typ einer Variablen in VBScript ab

Wie erhalte ich den Typ einer Variablen mit VBScript?

48
Ash Burlaczenko

Ist VarType was brauchst du?

Gibt einen Wert zurück, der den Subtyp einer Variablen angibt.

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

Die VarType-Funktion gibt den Wert für Array niemals alleine zurück. Es wird immer zu einem anderen Wert hinzugefügt, um ein Array mit einem .__ anzuzeigen. Spezieller Typ. Der Wert für Variant wird nur zurückgegeben, wenn er über .__ verfügt. wurde zu dem Wert für Array hinzugefügt, um anzuzeigen, dass das Argument für die Die VarType-Funktion ist ein Array. Der für eine .__ zurückgegebene Wert. Ein Array von Ganzzahlen wird als 2 + 8192 oder 8194 berechnet. Wenn ein Objekt .__ hat. Als Standardeigenschaft gibt VarType (Objekt) den Typ des Standardwerts .__ zurück. Eigentum.

66
Martin Smith

Wenn Sie den Typnamen eines Objekts erhalten möchten, das einer Variablen mit Set zugewiesen ist, können Sie stattdessen TypeName verwenden.

Class SomeClass
    '' empty class
End Class

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

Die Antwort von Tmdean funktioniert auch, um den Typnamen (keine ganze Zahl) aller anderen Variablentypen (per http://msdn.Microsoft.com/de-de/library/ie) zu erhalten /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()"
7
user66001
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
3
Stefan Arhip

vartype ist angebracht ... 

Dim x
x=123
msgbox VarType(x)
1
user887648
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

Diese Version erfordert mehr Aufwand für das Einrichten des Wörterbuchs, sucht dann jedoch bei jeder Prüfung (mit gekreuzten Fingern) jeden Typ, anstatt jeden einzelnen Typ jedes Mal zu überprüfen.

äquivalenter JScript-Code (hypothetisch, da JScript typeof enthält und viele vb-Typen fehlen):

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