Đây có lẽ chỉ là suy nghĩ mơ ước ...Có cách nào để kiểm tra xem một hàm VBScript có được xác định không?
Có cách nào để kiểm tra xem liệu hàm ASP/VBScript được xác định trước khi gọi không?
Đây có lẽ chỉ là suy nghĩ mơ ước ...Có cách nào để kiểm tra xem một hàm VBScript có được xác định không?
Có cách nào để kiểm tra xem liệu hàm ASP/VBScript được xác định trước khi gọi không?
Đó là một cách hơi hacky để làm điều đó vì nó dựa vào khi thiết lập "On Error Resume Next", nhưng bạn có thể làm một cái gì đó như thế này:
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
Các cuộc gọi đến GetRef sẽ tạo ra một ngoại lệ nếu sub hoặc chức năng bạn đang cố gắng để có được một con trỏ không tồn tại (như là trường hợp ở đây với DoStuff2). Sau đó, bạn có thể kiểm tra xem tham chiếu đã được đặt như mong đợi chưa.
Đây là giải pháp của tôi mà hoạt động trên nguyên tắc tương tự, nhưng hacky-Ness là khá khép kín:
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
Vâng - đó là những gì tôi đã làm với nó. :-) –
Bạn có thể đơn giản hóa điều này thành 'FunctionExists = (Err.Number = 0)' để đặt 'Boolean'. – Lankymart
@Lankymart, không hoạt động tương tự. Không chắc tại sao không. –
Nếu bạn đang vào kiểm tra Err.Number sau khi cố gắng gọi hàm. Nhưng sau đó chức năng bạn đang gọi có thể được xác định, được gọi, nhưng là nguồn gốc của lỗi, mà tôi đoán không phải là những gì bạn muốn. – Xiaofu
Điều đó có hiệu quả. Cảm ơn! –