基 础 函 数 参 考


Call

调用包含字串参数的用户定义函数.

Call ( "函数" [, 参数 1[, 参数 2 [, 参数 N]]] )

参 数

函数 用户函数名称.
参数 传递给调用函数的参数.

返 回 值

成功: 返回调用函数的返回值. @error 和 @extended 可能包含调用函数设置的值.
失败: 设置 @error 为 0xDEAD; @extended 为 0xBEEF, 函数不存在或参数无效.

备 注

"函数"不能是 AutoIt 内置函数或插件函数.
本函数可以将参数传递给调用函数, 但不支持 ByRef 参数, 因为 ByRef 参数无法检索.
可以传递一个特殊的数组代替个别参数.
数组的第一个元素必须设置为 "CallArgArray", 元素 1 - n 将作为单独参数传递给函数.
如果使用特殊数组, 则调用的 Call() 不应有其他参数. 见函数示例.
Call() 本身可以设置 @error; 或由调用函数设置 @error.
如果 Call() 设置 @error, 则值将会是 0xDEAD, 而 @extended 被设置为 0xBEEF.
参考函数示例中未发现调用函数的示例.

相 关 函 数

Execute

函 数 示 例


; 调用不接受参数的函数.
Call("Test1")

; 调用接受一个参数的函数, 并传递这个参数.
Call("Test2", "来自 Call() 的消息!")

; 演示如何使用一个特殊的数组参数.
Global $aArgs[4]
$aArgs[0] = "CallArgArray" ; 这是必需的, 否则, Call() 的调用将无法识别含参数的数组
$aArgs[1] = "这是字符串" ; 参数是一个字符串
$aArgs[2] = 47 ; 参数是一个数字
Global $array[2]
$array[0] = "数组元素 0"
$array[1] = "数组元素 1"
$aArgs[3] = $array ; 三个参数是一个数组

; 我们已经建立了特殊的数组, 现在调用函数
Call("Test3", $aArgs)

; 测试调用一个不存在的函数.  可以使用下面的方法:
; 检查 @error 和 @extended 中记录的故障值.
Local Const $sFunction = "DoesNotExist"
Call($sFunction)
If @error = 0xDEAD And @extended = 0xBEEF Then MsgBox(4096, "", "函数不存在.")

Func Test1()
    MsgBox(4096, "", "呼叫")
EndFunc   ;==>Test1

Func Test2($sMsg)
    MsgBox(4096, "", $sMsg)
EndFunc   ;==>Test2

Func Test3($sString, $nNumber, $aArray)
    MsgBox(4096, "", "字串为: " & @CRLF & $sString)
    MsgBox(4096, "", "数字为: " & @CRLF & $nNumber)
    For $i = 0 To UBound($aArray) - 1
        MsgBox(4096, "", "Array[" & $i & "] 包含:" & @CRLF & $aArray[$i])
    Next
EndFunc   ;==>Test3

provider with jb51.net (unicode)