Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вызов функции с определённым количеством аргументов

Ответить
Настройки темы
Вызов функции с определённым количеством аргументов

Аватара для Паразит

Пользователь


Сообщения: 68
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет. Ув. скриптописцы, посоветуйте что-нибудь дельное.
Вот у меня есть AutoIT скрипт, в котором я вызываю функцию.

Код: Выделить весь код
Call(aaa, "wwwwwww", "ggggggggggggg", "kkkkkkkkkkkkk")
Func aaa($rrr, $ttt, $yyy)
MsgBox(0, "Msg", $rrr)
MsgBox(0, "Msg", $ttt)
MsgBox(0, "Msg", $yyy)
EndFunc
Он работает, но только в том случае, если количество аргументов, точно равно количеству принимаемых параметров вызываемой функции.
Если их 2 или четыре, то функция уже не запускается. Ну так вот, что бы вы посоветовали? Какую можно сделать хитрость?

Отправлено: 09:43, 13-02-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Паразит:
Ну так вот, что бы вы посоветовали? »
Почитать документацию:
Цитата:
Optional parameters are defined by assigning a default value to them. The value may be a global variable, macro or literal value. Optional parameters always appear last in the function definition. All parameters added after the first optional parameter must also be optional. Inside the function, the number of parameters given when the function was called can be retrieved with the @NumParams macro (see example 2).
Цитата Паразит:
Какую можно сделать хитрость? »
Код: Выделить весь код
Sample("a", "b")
Sample("a", "b", "c")
Sample("a", "b", "c", "d")

Exit(0)

Func Sample($Arg1, $Arg2, $Arg3 = "", $Arg4 = "")
	Local $i

	ConsoleWrite("Total parameters: " & @NumParams & @CRLF)

	For $i = 1 To @NumParams
		ConsoleWrite(@TAB & "Parameter #" & $i & ": " & Eval("Arg" & $i) & @CRLF)
	Next

	ConsoleWrite(@CRLF)
EndFunc
Цитата:
Код: Выделить весь код
Total parameters: 2
	Parameter #1: a
	Parameter #2: b

Total parameters: 3
	Parameter #1: a
	Parameter #2: b
	Parameter #3: c

Total parameters: 4
	Parameter #1: a
	Parameter #2: b
	Parameter #3: c
	Parameter #4: d
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:03, 13-02-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <Array.au3>

Dim $aArray[2] = [1, 2]

_CallEx('MyFunc', 'Param1', 'Param2', $aArray)
ConsoleWrite('@error = ' & @error & @CRLF)

Func MyFunc($sParam1, $sParam2, $aParam3)
    ConsoleWrite($sParam1 & ' : ' & $sParam2 & @CRLF)
    _ArrayDisplay($aParam3)
EndFunc

Func _CallEx($sFunction, $vParam1 = '', $vParam2 = '', $vParam3 = '', $vParam4 = '', $vParam5 = '', $vParam6 = '', $vParam7 = '', $vParam8 = '', $vParam9 = '', $vParam10 = '', $vParam11 = '', $vParam12 = '', $vParam13 = '', $vParam14 = '', $vParam15 = '', $vParam16 = '', $vParam17 = '', $vParam18 = '', $vParam19 = '', $vParam20 = '')
    Local $sCall_Params = 'Call("' & $sFunction & '"'
    Local $iRet, $iError

    For $i = 2 To @NumParams
        $sCall_Params &= ', $vParam' & $i - 1
    Next

    $sCall_Params &= ')'

    Do
        $iRet = Execute($sCall_Params)
        $iError = @error

        $sCall_Params = StringRegExpReplace($sCall_Params, '(.*), .*\)$', '\1)', 1)
    Until $iError = 0 Or @extended = 0

    Return SetError($iError, 0, $iRet)
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:04, 13-02-2017 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вызов функции с определённым количеством аргументов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Вызов функции DisplayPropertyNames(), содержащий цикл for...in koalder Вебмастеру 6 22-02-2011 15:36
CMD/BAT - [решено] Как организовать вызов bat с большим количеством переменных и их обработку? seriych Скриптовые языки администрирования Windows 13 27-01-2011 15:48
[решено] Вызов С++ функции из PHP скрипта WhitePangolin Вебмастеру 4 26-03-2010 13:22
HotKeySet и вызов функции с параметрами r35p3ct AutoIt 4 24-09-2009 16:28
Delphi - Вызов функции Flash из Delphi btx Программирование и базы данных 1 27-02-2006 01:11




 
Переход