This is probably just wishful thinking...
Is there any way to check to see if an ASP/VBScript function is defined before calling it?
This is probably just wishful thinking...
Is there any way to check to see if an ASP/VBScript function is defined before calling it?
Here is my solution which works on the same principle, but the hacky-ness is pretty self-contained:
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)
to set the Boolean
. –
Hose It's a slightly hacky way to do it as it relies on having set "On Error Resume Next", but you could do something like this:
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
The call to GetRef will generate an exception if the sub or function you're trying to get a pointer to does not exist (as is the case here with DoStuff2). You can then check if the reference was set as expected.
The provided answers are correct, I just made a simple modification by adding Err.Clear
and compacted the function based on the answers provided.
I also renamed the function to a more appropriate name to reflect the fact that it can be used to check the existence of both functions and subroutines.
Function ProcExists(ByVal ProcName)
On Error Resume Next
Set ProcName = GetRef(ProcName)
ProcExists = (Err.Number = 0)
Err.Clear
On Error GoTo 0
End Function
© 2022 - 2024 — McMap. All rights reserved.