سؤال

كيف يمكنك الحصول على النوع (الاسم كسلسلة كافٍ) لكائن في VB6 في وقت التشغيل؟

أي.شيء مثل:

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

/يحرر: للتوضيح، أحتاج إلى التحقق من الكائنات المكتوبة ديناميكيًا.مثال:

Dim y As Object 

Set y = CreateObject("SomeType")

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

حيث سيكون الإخراج "CommandButton"

هل كانت مفيدة؟

المحلول

أعتقد أن ما تبحث عنه هو TypeName بدلاً من TypeOf.

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

نصائح أخرى

TypeName هو ما تريد ...فيما يلي بعض الأمثلة على الإخراج:

كود 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

ليس لدي نسخة من VB6 في متناول اليد، ولكن أعتقد أنك بحاجة إلى

Typename()

وظيفة...يمكنني رؤيته في Excel VBA، لذلك من المحتمل أن يكون في نفس وقت التشغيل.ومن المثير للاهتمام، أن المساعدة تشير على ما يبدو إلى أنه لا ينبغي أن تعمل مع النوع المحدد من قبل المستخدم، ولكن هذه هي الطريقة الوحيدة التي اتبعتها على الإطلاق يفعل استخدامه.

مقتطف من ملف المساعدة:

وظيفة اسم النوع

تقوم بإرجاع سلسلة توفر معلومات حول متغير.

بناء الجملة

اسم النوع (فارنام)

وسيطة varname المطلوبة هي متغير يحتوي على أي متغير باستثناء متغير من النوع المعرفة من قبل المستخدم.

يجب أن يكون هذا صعبًا، نظرًا لأن جميع الكائنات في VB6 هي COM (IDispatch) أشياء.وبالتالي فهي مجرد واجهة.

TypeOf(object) is class ربما يتم إجراء مكالمة get_interface لـ COM فقط (لقد نسيت اسم الطريقة بالضبط، آسف).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top