|
Вопрос # 4 001/ вопрос открыт / |
|
Здравствуйте!
У меня есть код(не выкладую, т.к. его всё равно читать ни-кто не будет), в котором есть цикл <<for ... then>>. Значит так, мне нужно "выйди" из этого цикла. Можно воспользоваться оператором break, но не могу, т.к. код не позволяет. Можно воспользоваться <<Goto>>, но я им не пользуюсь принципиально. Скажите, есть ещё какие нибудь способы покинуть этот цикл? Да, и чем больше, тем лучше... Благодарен за помощь...
 |
Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 8 апреля 2010, 23:04
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 17; последнее сообщение — 8 апреля 2010, 23:34; участников в обсуждении: 4.
|
Ерёмин А.А. (статус: *Администратор), 8 апреля 2010, 23:14 [#1]:
Что значит "код не позволяет"? Что-то новенькое.
Цитата (padonak):
Да, и чем больше, тем лучше...
Exit, Close, Application.Terminate, Halt(1), ...
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:19 [#2]:
Нет, код позволяет, просто "гемороя" много. Там я работаю с матрицей, и два вложеных цикла с процедурой. В общем: "if bool = false then break" у меня вобще никак не "пашет"...
|
|
IlluminatI (статус: 2-ой класс), 8 апреля 2010, 23:19 [#3]:
>Exit, Close, Application.Terminate, Halt(1), ...
это все не к циклу относится, так что думаю не прокатит 
padonak выложи код, и объясни, что значит "код не позволяет"? Все он позволяет, просто уметь надо
|
|
Вадим К (статус: Академик), 8 апреля 2010, 23:20 [#4]:
цикла for...then нет. приведите все таки хоть кусок кода (writeln, showmessage, разные расчетные куски можно выкинуть)
Галочка "подтверждения прочтения" - вселенское зло.
|
|
IlluminatI (статус: 2-ой класс), 8 апреля 2010, 23:20 [#5]:
может тогда Continue ? Продолжит цикл с новым значением параметра
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:20 [#6]:
IlluminatI, я не думаю что ты в 500 строках кода рыться будешь...
|
|
IlluminatI (статус: 2-ой класс), 8 апреля 2010, 23:21 [#7]:
не буду. выкинь оттуда всю чепуху типа выводов, расчетов, итп.
|
|
Вадим К (статус: Академик), 8 апреля 2010, 23:23 [#8]:
А, ну так так двойной цикл... он то конечно не позволяет выйти break.
if bool = false then break
а это вообще ошибка
в таких случаях обычно есть два варианта.
1) завести доппеременную и break дописать в конец первого цикла. Но это криво
2) два цикла вынести в отдельную функцию. С функции всегда можно выйти с помощью exit; с любого места. В результате никаких проблем.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:24 [#9]:
for i := 1 to 22 do begin
for i2 := 1 to 22 do begin
if wq[i, i2] = step then begin
pr_mass(timer2); m3 := i; n3 := i2;
Application.ProcessMessages;
end;
end;
end;
Вот код, а процедура pr_mass очень ОЧЕНЬ объёмная. Если не трудно, вы напишите варианты, а я потом уже эксперементы производить буду. Да, и ещё, я могу в процедуре, узнать, стоит мне выполнять дальше провернку матрицы или достаточно(переменная bool)
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:26 [#10]:
два цикла вынести в отдельную функцию. С функции всегда можно выйти с помощью exit; с любого места. В результате никаких проблем >>> это всё прекрасно, но дело в том, что я не умею пользоваться исключительными ситуациями, придётся восполнять пробелы в памяти... Но спасибо, надеюсь сработает...
|
|
IlluminatI (статус: 2-ой класс), 8 апреля 2010, 23:26 [#11]:
тогда Exit решает твою проблему. Из процедуры / функции можно выйти из любого места.
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:27 [#12]:
Ребят, спасибо! Плюс к репутации всем! За оперативность!!!
|
|
IlluminatI (статус: 2-ой класс), 8 апреля 2010, 23:27 [#13]:
>я не умею пользоваться исключительными ситуациями
это не исключительная ситуация, простой код, типа:
if not(bool) then Exit;
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:28 [#14]:
Вадим, извеняюсь "Чтобы изменить репутацию этому пользователю, Вам нужно изменить репутацию ещё как минимум 1 пользователю."
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:29 [#15]:
IlluminatI, это я знаю, проблема в том, что мне Image очистить нужно, и значения для переменных в любом случае. Короче прийдётся весь алгоритм переделывать...
|
|
IlluminatI (статус: 2-ой класс), 8 апреля 2010, 23:32 [#16]:
если нужно сделать что-то еще, можно же так написать:
if not(bool) then
begin
// чистим Image...
// обнуляем переменные...
// шаманим...
Exit;
end;
или такое тоже не прокатит?
|
|
padonak (статус: Посетитель), 8 апреля 2010, 23:34 [#17]:
IlluminatI, да разберусь, всё норм. А я то думал "где собака зарыта", а вон оно где оказалось. спс
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|