1 | |||||||||||
Как выйти из бесконечного цикла?14.10.2012, 23:47. Показов 8428. Ответов 5
Метки нет (Все метки)
Есть вот такая специфическая форма записи бесконечного цикла:
Именно перейти, а не вообще выйти из скрипта. А вот не получается, хоть визуально и должно. Команда Exit работает, Goto - нет. Добавлено через 6 минут прибегнул к хитрости:
0
|
14.10.2012, 23:47 | |
Ответы с готовыми решениями:
5
Старый борланд: как выйти из бесконечного цикла по нажатию заданной клавиши? Не могу выйти с бесконечного цикла Выйти из бесконечного цикла для вызова деструктора Как выйти из цикла? |
16.10.2012, 06:20 [ТС] | 2 | |||||
Вообщем пока, лучше пользоваться дедовским методом:
Например, такое может понадобится для Shell: Самоуничтожения программы
0
|
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
|
|||||||||||||
11.12.2012, 15:31 | 3 | ||||||||||||
Если рассматривать такой код
Вот аналогичный пример:
0
|
12.12.2012, 17:28 [ТС] | 4 | |||||
Про двойные проценты, если честно, не понял.
Они нужны потому, как в среде интерпретируются как 1 знак %. А сам процент - арифметический оператор. Про FOR.EXE тоже намек не совсем понял. Вы имеете в виду, если FOR рассматривать, как внешнюю программу, тогда она не увидит мою метку... Но ведь это не есть совершенно другая среда, как в примере с "Call 2.cmd". Ведь такой вариант работает! :
0
|
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
|
|
12.12.2012, 17:47 | 5 |
Сообщение было отмечено как решение
Решение
В точку!
Если бы была другая среда, то if...goto не работало бы. Хотя среда остаётся той же, но правила для параметров for такие же как и для внешних программ. Если попробовать передать внешней программе строку начинающуюся на %, то ничего хорошего из этого не выйдет. А %% передаётся как внутрь for, как %. Когда for работает не из батника, то достаточно одинарного процента, т.к. в таком случае for как бы самостоятельная программа. На самом деле for не является самостоятельной. Но если её воспринимать таковой, то можно избежать проблема подобных описанной.
0
|
13.12.2012, 13:18 [ТС] | 6 | ||||||||||
Собственно из своего же скрина я понял почему не получается выход из такого цикла.
Как видим, несмотря на goto при условии в 3 итерации команда For просматривает оперируемую часть все 3 раза. Соответственно для бесконечного числа итераций, For не может завершить обработку, т.к. таких частей после Do будет рассмотрено бесконечное кол-во. Что примечательно, саму метку вне цикла его среда видит. Это можно увидеть из эксперимента:
Интерпретатор закрывается аварийно. Т.е. даже некорректная команда не может заставить выйти из цикла после первой итерации. Единственный способ выхода - это завершить работу сценария:
Сообщение от test.log
0
|
13.12.2012, 13:18 | |
13.12.2012, 13:18 | |
Помогаю со студенческими работами здесь
6
Как выйти из цикла while(); do while - как выйти из цикла? Как выйти из цикла Как выйти из цикла? Не получается Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |