![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование процедуры Break
Anthony © (2011-01-06 02:50:00)Подскажите пожалуйста, почему испольование Break внутри нескольких циклов:
for i := 0 to 100
for j := 0 to 100
for k := 0 to 100
Break;
- приводит к выпадению сразу из всех циклов, а не только из того цикла (в данном случае по k), в котором находится Break ?
Есть ли в Delphi какие-то опции компилятора, чтобы по Break прерывать только тот цикл, в котором вызвана эта процедура ?
RWolf (2011-01-07 16:07:00) [1]хм, мне такое накодить даже в голову не приходило.
goto в процедуру, надо же.
oxffff (2011-01-07 16:06:00) [2]
> Anthony © (06.01.11 02:50)
> Подскажите пожалуйста, почему испольование Break внутри
> нескольких циклов
Очень удобно для выхода из нескольских циклов использовать отдельную вложенную процедуру(в которую вынесены циклы) с использованием exit в ней.
jack128_ (2011-01-07 15:11:00) [3]
> Очень удачны бывают переходы в тело цикла DO, особенно из
> других модулей. Хотя трансляторы, как правило, это запрещают,
> их легко обвести вокруг пальца, пользуясь переменными типа
> метки. Передача управления в вызываемую процедуру в обход
> заголовка принесет Вам долгие часы счастливых раздумий над
> кодом завершения ОС5.
Пару лет эта цитата висит у нас в свн. Наконец она пригодилась!!! Ура!
Rouse_ (2011-01-07 10:07:00) [4]
> Ega23 © (06.01.11 17:20) [7]
>
> Все циклы прерывает Exit или Goto:)
Очень удачны бывают переходы в тело цикла DO, особенно из других модулей. Хотя трансляторы, как правило, это запрещают, их легко обвести вокруг пальца, пользуясь переменными типа метки. Передача управления в вызываемую процедуру в обход заголовка принесет Вам долгие часы счастливых раздумий над кодом завершения ОС5.
Halt (2011-01-06 23:16:00) [5]Все циклы прерываю я.
Ega23 (2011-01-06 17:20:00) [6]Все циклы прерывает Exit или Goto :)
Anthony (2011-01-06 16:36:00) [7]Да, извиняюсь, что-то видно я напутал в коде, не могу повторить это "недоразумение", которое каким-то образом ранее получил в своей программе, всё оказывается работает, как надо...
Но хорошо, что спросил, потому что до задания этого вопроса на форум - в голове осталась неверная информация, что Break прерывает сразу все циклы.
Благодарю всех, кто откликнулся помочь!..
Anatoly Podgoretsky (2011-01-06 12:17:00) [8]> Германн (06.01.2011 03:25:01) [1]
Ошибка только в мозгах, первые два цикла так быстро выполняются, что
кажется, что кажется.
Юрий Зотов (2011-01-06 10:06:00) [9]> Anthony © (06.01.11 02:50)
Из справки:
You can use the standard Break and Continue procedures to control the flow of a repeat, while, or for statement. Break terminates the statement in which it occurs , while Continue begins executing the next iteration of the sequence.
В реальности так оно и есть, так что действительно ищите ошибку в программе.
KilkennyCat (2011-01-06 09:57:00) [10]
> опции компилятора
новый стиль программирования - переключений опций компилятора....
KilkennyCat (2011-01-06 09:56:00) [11]continue или goto
Германн (2011-01-06 03:25:00) [12]
> чтобы по Break прерывать только тот цикл, в котором вызвана
> эта процедура
Так оно и есть и всегда было. Ищи ошибку в программе.