Функция Call

         Описание функции


Call

Вызывает пользовательскую функцию, передаваемую как строковый параметр.

Call ( "function" [, param1 [, param2 [, paramN ]]] )

Параметры

function Имя пользовательской функции.
param Аргументы, которые будут переданы вызываемой функции.

Возвращаемое значение

Успех:Возвращает значение возвращаемое вызываемой функцией. Оба @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()!")

; This demonstrates how to use the special array argument.
Global $aArgs[4]
$aArgs[0] = "CallArgArray" ; Этот параметр обязательно, иначе, Call() не распознает параметр как массив параметров
$aArgs[1] = "Это строка" ; Параметр из одной строки
$aArgs[2] = 47 ; Параметр 2 является числом
Global $array[2]
$array[0] = "Элемент массива 0"
$array[1] = "Элемент массива 1"
$aArgs[3] = $array ; Параметр 3 является массивом

; Мы создали специальный массив, теперь вызываем функцию
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

Func Test2($sMsg)
    MsgBox(4096, "", $sMsg)
EndFunc

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