To prawdopodobnie tylko pobożne życzenie ...Czy istnieje sposób sprawdzenia, czy zdefiniowano funkcję VBScript?
Czy istnieje sposób sprawdzenia, czy zdefiniowano funkcję ASP/VBScript przed wywołaniem?
To prawdopodobnie tylko pobożne życzenie ...Czy istnieje sposób sprawdzenia, czy zdefiniowano funkcję VBScript?
Czy istnieje sposób sprawdzenia, czy zdefiniowano funkcję ASP/VBScript przed wywołaniem?
Jest to nieco hacky sposób to zrobić, ponieważ opiera się na posiadaniu ustaw „On Error Resume Next”, ale można zrobić coś takiego:
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
Wezwanie do GetRef wygeneruje wyjątek, jeśli sub lub funkcja, którą próbujesz uzyskać, aby wskaźnik nie istniał (tak jak w przypadku tutaj z DoStuff2). Następnie możesz sprawdzić, czy odniesienie zostało ustawione zgodnie z oczekiwaniami.
Oto moje rozwiązanie, które działa na tej samej zasadzie, ale hacky-ności jest dość powściągliwy:
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
Tak, właśnie to z nim skończyłem. :-) –
Możesz uprościć to do 'FunctionExists = (Err.Number = 0)', aby ustawić 'Boolean'. – Lankymart
@Lankymart, nie działa tak samo. Nie wiem, dlaczego nie. –
W przeciwnym razie jesteś na sprawdzenie Err.Number po próbie wywołania funkcji. Ale wtedy funkcja, którą wywołujesz, może zostać zdefiniowana, zostać wywołana, ale być źródłem błędu, który, jak sądzę, nie jest tym, czego potrzebujesz. – Xiaofu
To działa. Dzięki! –