Страница 1 из 1
Проверк переменной
Добавлено: 27 ноя 2012, 17:46
Terminus
Есть переменная num в ней содержится номер который набирает пользователь, вопрос в том как проверить сколько цифр содержится в этой переменной. Пробую делать так:
Код: Выделить всё
exten => _X.,n,Set(xx=${LEN(${num})})
exten => _X.,n,GotoIf($[${xx}=4]?ok:err)
...
exten => _X.,n(ok),Wait(1)
...
exten => _X.,n(err),Wait(1)
Но сколько бы знаков не содержала переменная всегда осуществляется переход на "err", даже если их 4 и по условию должен быть переход на "ок". Вопрос к знатокам где я мог ошибиться?
Re: Проверк переменной
Добавлено: 27 ноя 2012, 18:14
ded
1) вставляйте проверки
exten => _X.,1бпредполагаем, что тут что-то есть выше!
exten => _X.,n,Set(xx=${LEN(${num})})
exten => _X.,n, NoOp(${xx})
2) exten => _X.,n,GotoIf($[${xx}=4]?ok:err) - а тут кавычки помоут на логических операциях.
Re: Проверк переменной
Добавлено: 27 ноя 2012, 19:03
Samael28
Попробую чуть модифицировать код...
Код: Выделить всё
...
exten => _X.,n,Set(xx=${LEN(${EXTEN})})
exten => _X.,n,GotoIf($["${xx}"="4"]?ok:err)
...
exten => _X.,n(ok),Wait(1)
...
exten => _X.,n(err),Wait(1)
Ну и вывод консоли в студию
Re: Проверк переменной
Добавлено: 27 ноя 2012, 19:33
igorostkir
"${xx}" - хз, но я тоже использую в сравнении кавычки всегда . всегда есть паронойный подсознательный страх, что вернуться может не целое число а что-то типа "вот вам error"
Re: Проверк переменной
Добавлено: 29 ноя 2012, 08:43
Terminus
Все оказалось гораздо прозаичнее, он попадал на ок, но после этого переходил на err, так как правила идут друг за другом, проблема решилась выставлением команды exten => _X.,n,Goto(cont,_X,9), где 9 номер правила идущего уже после err.