Pergunta

Este é provavelmente apenas uma ilusão pensar ...

Existe alguma maneira de verificar para ver se uma função ASP / VBScript é definida antes de chamar isso?

Foi útil?

Solução

É uma maneira um pouco hacky para fazê-lo, uma vez que depende de ter set "On Error Resume Next", mas você poderia fazer algo parecido com isto:

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

A chamada para GetRef irá gerar uma exceção se o sub ou função que você está tentando obter um ponteiro para não existe (como é o caso aqui com DoStuff2). Você pode então verificar se a referência foi definida como esperado.

Outras dicas

Aqui está a minha solução que funciona com o mesmo princípio, mas o hacky-ness é bastante auto-suficiente:

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 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top