2008-09-09 12 views
6

रनटाइम पर वीबी 6 में ऑब्जेक्ट का प्रकार (स्ट्रिंग के रूप में नाम पर्याप्त) कैसे प्राप्त कर सकता है? स्पष्ट करने के लिए, मैं गतिशील रूप से लिखे गए वस्तुओं पर जांच करने की आवश्यकता:वीबी 6 रनटाइम टाइप पुनर्प्राप्ति

अर्थात तरह कुछ:

If Typeof(foobar) = "CommandButton" Then ... 

/संपादित करें। एक उदाहरण:

Dim y As Object 

Set y = CreateObject("SomeType") 

Debug.Print(<The type name of> y) 

कहाँ उत्पादन "CommandButton"

उत्तर

8

मुझे लगता है कि आप जो खोज रहे हैं वह TypeOf के बजाय TypeName है।

If TypeName(foobar) = "CommandButton" Then 
    DoSomething 
End If 

संपादित करें: डायनामिक ऑब्जेक्ट्स का आपका क्या अर्थ है? क्या आपका मतलब CreateObject ("") के साथ बनाई गई वस्तुओं का कारण है, क्योंकि यह अभी भी काम करना चाहिए।

संपादित करें:

Private Sub Command1_Click() 
    Dim oObject As Object 
    Set oObject = CreateObject("Scripting.FileSystemObject") 
    Debug.Print "Object Type: " & TypeName(oObject) 
End Sub 

आउटपुट

Object Type: FileSystemObject

+0

हो सकता है कि मैं अपने प्रश्न को स्पष्ट करना चाहिए, मुझे पता है कि क्या एक गतिशील टाइप किया वस्तु है चाहते हैं, इसलिए का उपयोग कर TypeName होगा (मेरे मामले में) केवल "ऑब्जेक्ट" लौटाएं। – DAC

0

होगा यह मुश्किल साबित करना चाहिए, के बाद से VB6 में सभी वस्तुओं COM (IDispatch) बातें हैं। इस प्रकार वे केवल एक इंटरफ़ेस हैं।

TypeOf(object) is class शायद केवल एक COM get_interface कॉल करता है (मैं सही विधि नाम भूल गया, क्षमा करें)।

2

मैं VB6 की एक प्रति सौंपने के लिए की जरूरत नहीं है, लेकिन मैं आपको

Typename() 

समारोह की जरूरत है। .. मैं इसे एक्सेल वीबीए में देख सकता हूं, इसलिए यह शायद एक ही रनटाइम में है। दिलचस्प बात यह है कि सहायता यह सुझाव देती है कि इसे उपयोगकर्ता द्वारा परिभाषित प्रकार के लिए काम नहीं करना चाहिए, लेकिन यह एकमात्र तरीका है जिसे मैंने कभी भी का उपयोग किया है। मदद फ़ाइल से

अंश:

TypeName समारोह

एक स्ट्रिंग है कि एक चर के बारे में जानकारी प्रदान करता है देता है।

सिंटेक्स

TypeName (VARNAME)

आवश्यक VARNAME तर्क छोड़कर उपयोगकर्ता-निर्धारित प्रकार का एक चर किसी भी चर युक्त एक संस्करण है।

2

टाइपनाम आप जो चाहते हैं ...यहाँ कुछ उदाहरण उत्पादन होता है:

VB6 कोड:

Private Sub cmdCommand1_Click() 
Dim a As Variant 
Dim b As Variant 
Dim c As Object 
Dim d As Object 
Dim e As Boolean 

a = "" 
b = 3 
Set c = Me.cmdCommand1 
Set d = CreateObject("Project1.Class1") 
e = False 

Debug.Print TypeName(a) 
Debug.Print TypeName(b) 
Debug.Print TypeName(c) 
Debug.Print TypeName(d) 
Debug.Print TypeName(e) 
End Sub 

परिणाम:

String 
Integer 
CommandButton 
Class1 
Boolean