Comment obtenir le type d'une variable à l'aide de VBScript?
Est-ce que VarType ce dont vous avez besoin?
Retourne une valeur indiquant le sous-type d'une 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 fonction VarType ne renvoie jamais la valeur de Array par elle-même. Il est toujours ajouté à une autre valeur pour indiquer un tableau de type particulier. La valeur de Variant n'est renvoyée que si été ajouté à la valeur de Array pour indiquer que l'argument de La fonction VarType est un tableau. Par exemple, la valeur renvoyée pour un tableau d'entiers est calculé comme 2 + 8192, ou 8194. Si un objet a une propriété par défaut, VarType (objet) renvoie le type de sa valeur par défaut propriété.
Si vous souhaitez obtenir le nom du type d'un objet affecté à une variable avec Set
, vous pouvez utiliser TypeName
à la place.
Class SomeClass
'' empty class
End Class
Dim x
Set x = New SomeClass
WScript.Echo TypeName(x) '' displays "SomeClass"
La réponse de Tmdean fonctionne également pour obtenir le nom de type (pas un entier) de (presque) tous les autres types de variables (par 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()"
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
vartype est approprié ...
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
Cette version demande plus d’efforts lors de la configuration du dictionnaire, mais recherche ensuite tous les types dans un contrôle (doigts croisés) plutôt que de vérifier chaque type à chaque fois.
code JScript équivalent (hypothétique, car JScript a typeof et manque de nombreux types 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]];
};