यह शायद सिर्फ इच्छापूर्ण सोच है ...क्या यह देखने के लिए कोई तरीका है कि कोई VBScript फ़ंक्शन परिभाषित किया गया है या नहीं?
क्या यह देखने के लिए कोई तरीका है कि कोई एएसपी/वीबीस्क्रिप्ट फ़ंक्शन इसे कॉल करने से पहले परिभाषित किया गया है या नहीं?
यह शायद सिर्फ इच्छापूर्ण सोच है ...क्या यह देखने के लिए कोई तरीका है कि कोई VBScript फ़ंक्शन परिभाषित किया गया है या नहीं?
क्या यह देखने के लिए कोई तरीका है कि कोई एएसपी/वीबीस्क्रिप्ट फ़ंक्शन इसे कॉल करने से पहले परिभाषित किया गया है या नहीं?
यह यह करने के लिए के रूप में सेट होने "त्रुटि पर फिर से शुरू करें अगला" पर निर्भर करता है एक से थोड़ा hacky रास्ता है, लेकिन आप कुछ इस तरह कर सकता है:
On Error Resume Next
Dim objRef1, objRef2
Set objRef1 = GetRef("DoStuff1")
If objRef1 Is Nothing Then
Call objRef1
Else
MsgBox "DoStuff1 is not defined!"
End If
Set objRef2 = GetRef("DoStuff2")
If objRef2 Is Nothing Then
MsgBox "DoStuff2 is not defined!"
Else
Call objRef2
End If
Sub DoStuff1
MsgBox "DoStuff1!"
End Sub
GetRef करने के लिए कॉल एक अपवाद है, तो उत्पन्न होगा उप-फ़ंक्शन जो आप पॉइंटर प्राप्त करने की कोशिश कर रहे हैं, मौजूद नहीं है (जैसा कि DoStuff2 के साथ यहां मामला है)। फिर आप जांच सकते हैं कि संदर्भ अपेक्षित के रूप में सेट किया गया था या नहीं।
यहाँ मेरी समाधान है जो एक ही सिद्धांत पर काम करता है, लेकिन hacky सत्ता सुंदर आत्म निहित है:
Function FunctionExists(func_name)
FunctionExists = False
On Error Resume Next
Dim f : Set f = GetRef(func_name)
If Err.number = 0 Then
FunctionExists = True
End If
On Error GoTo 0
End Function
हाँ - यही वह है जो मैंने इसके साथ किया। :-) –
आप 'बूलेन' सेट करने के लिए 'FunctionExists = (Err.Number = 0)' पर इसे सरल बना सकते हैं। – Lankymart
@ लंकीमार्ट, वही काम नहीं करता है। यकीन नहीं क्यों नहीं। –
नहीं तो आप फ़ंक्शन को कॉल करने की कोशिश कर के बाद Err.Number जाँच में कर रहे हैं। लेकिन फिर जिस फ़ंक्शन को आप कॉल कर रहे हैं उसे परिभाषित किया जा सकता है, जिसे कॉल किया जा सकता है, लेकिन त्रुटि का स्रोत बनें, जो मुझे लगता है कि आप जो चाहते हैं वह नहीं है। – Xiaofu
यह काम करता है। धन्यवाद! –