2010-07-19 15 views

उत्तर

64

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 समारोह अपने आप में सरणी के लिए मान देता है कभी नहीं। को विशेष प्रकार की सरणी इंगित करने के लिए हमेशा किसी अन्य मूल्य में जोड़ा जाता है। वेरिएन्ट के लिए मान केवल तभी लौटाया जाता है जब को ऐरे के मान में जोड़ा गया है यह इंगित करने के लिए कि VarType फ़ंक्शन एक सरणी है। उदाहरण के लिए, पूर्णांक के सरणी के लिए लौटाए गए मान को 2 + 8192, या 8194 के रूप में गणना की जाती है। यदि किसी ऑब्जेक्ट में एक डिफ़ॉल्ट प्रॉपर्टी है, तो VarType (ऑब्जेक्ट) इसकी डिफ़ॉल्ट संपत्ति का प्रकार देता है।

+1

VarType (इंडेक्स) रिटर्न 8. मतलब है। –

+5

8 = vbString - एक स्ट्रिंग इंगित करता है (मेरे उत्तर में लिंक से) –

+2

चीयर्स। पूछने से पहले सामान्य ज्ञान को जांचना चाहिए था। माफ़ कीजिये। + रेप। –

26

आप एक वस्तु Set साथ एक चर करने के लिए सौंपा के प्रकार के नाम प्राप्त करना चाहते हैं, तो आप TypeName बजाय उपयोग कर सकते हैं।

Class SomeClass 
    '' empty class 
End Class 

Dim x 
Set x = New SomeClass 
WScript.Echo TypeName(x) '' displays "SomeClass" 
3
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 
+0

http://hastebin.com/sahanaqozo.avrasm ओ (1) यह आपके लिए है।^_^ – Dmitry

7

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()" 
+0

क्या यह एक उत्तर या अवलोकन है? – Lankymart

+0

@Lankymart - प्रश्न को समझ में नहीं आता है। क्या उदाहरण किसी के लिए वास्तविकता में काम नहीं करता है? – user66001

0
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]]; 
}; 
संबंधित मुद्दे