| 
| 
 | Вопрос # 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, да разберусь, всё норм. А я то думал "где собака зарыта", а вон оно где оказалось. спс |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |