Остановить процедуру через break
|
|
AKukuruz | Дата: Четверг, 28 Июля 2016, 17:48 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Что надо сделать чтобы после трех раз процедура прекращала действие? То есть фигура не рисовалась. Вводим переменную равную числу фигур при ее значении равное трем надо что-то делать...
после redraw ставил
Код nr:=+1; if nr :=>3 then break;
ругается на отсутствие оператора... Не совсем понятно что там должен быть за оператор...
Код uses graphABC; var nr,px1,py1:integer;
procedure MouseDown(x,y,mb:integer); begin px1:=x; //начальная позиция фигурs равна центру экрана py1:=y; drawrectangle(px1-25,py1-50,px1+25,py1+50); lockdrawing; redraw; end;
procedure draw_r(); //рисуем begin onmousedown:=MouseDown; end;
begin//основной цикл SetWindowTitle('Графическое окно'); Setwindowsize(800,600); //размер окна CenterWindow;//центр монитора
draw_r();
end.
|
|
| |
bodya_WM | Дата: Четверг, 28 Июля 2016, 18:05 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Код var i: integer;
...
for i := 0 to 3 do begin // Что то делаем if i > 3 then break; end;
Разработчик игрового движка WaveGameEnvironment2D
Сообщение отредактировал bodya_WM - Четверг, 28 Июля 2016, 18:05 |
|
| |
AKukuruz | Дата: Пятница, 29 Июля 2016, 05:38 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Код procedure draw_r(); //рисуем begin var nr: integer; nr:=+1; for nr := 0 to 3 do onmousedown:=MouseDown; if nr > 3 then break; end;
говорит break вне цикла
|
|
| |
Ordan | Дата: Пятница, 29 Июля 2016, 07:25 | Сообщение # 4 |
Главный зомби
Сейчас нет на сайте
| AKukuruz, после for nr := 0 to 3 do забыл бегин энд
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
Lertmind | Дата: Пятница, 29 Июля 2016, 08:42 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| AKukuruz, твой код очень странный и неверный, перепишу немного по-другому чтобы показать:
Код program ideone;
procedure proc1(n: integer); var i: integer; begin for i := 0 to 10 do begin writeln(i); if i = n then break; end; writeln('procedure end'); // Выведется end;
begin proc1(4); end. Этот код выведет:
А этот код не выведет procedure end:
Код program ideone;
procedure proc1(n: integer); var i: integer; begin for i := 0 to 10 do begin writeln(i); if i = n then exit; end; writeln('procedure end'); // Не выведется end;
begin proc1(4); end. break - выход из цикла, а exit - из всей процедуры/функции.
Сообщение отредактировал Lertmind - Пятница, 29 Июля 2016, 09:18 |
|
| |
bodya_WM | Дата: Пятница, 29 Июля 2016, 08:51 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Цитата после for nr := 0 to 3 do забыл бегин энд я забыл что в PascalABC синаксис 70х годов. В делфях если выражение в одну строку то можно не писать begin и end.Добавлено (29 июля 2016, 08:51) ---------------------------------------------
Цитата твой код очень странный и неверный Особенно нет табуляций. Если бы код было больше - нечитабельно.
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
Ordan | Дата: Пятница, 29 Июля 2016, 09:17 | Сообщение # 7 |
Главный зомби
Сейчас нет на сайте
| bodya_WM, он не прервет цикл если под цикл попадает только onmousedown:=MouseDown;
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
bodya_WM | Дата: Пятница, 29 Июля 2016, 09:28 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Цитата он не прервет цикл если под цикл попадает только onmousedown:=MouseDown; спутал с exit.
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
AKukuruz | Дата: Воскресенье, 31 Июля 2016, 18:27 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Если в конце процедуры стоит break то прекращается выполнение цикла... А у меня вроде и условие выполняется но при клике все равно рисуются фигуры. Кароч или я что-то не понимаю или что-то делаю не так...
Добавлено (31 июля 2016, 18:27) ---------------------------------------------
Цитата Lertmind ( ) твой код очень странный и неверный, перепишу немного по-другому чтобы показать: не спорю, пока делаю очень много ошибок... учусь по урокам на сайтах...
да спасибо) процедуры с параметрами я еще не писал.
Код procedure draw_r(nr: integer); //рисуем begin begin onmousedown:=MouseDown; end; nr:=+1; if nr :=3 then break; end;
на предпоследней строчке ожидается оператор... я все не могу понять какой там оператор должен быть и зачем он нужен?...
есть действие после него счетчик... есть условие, все вроде нормально... я понимаю что есть ошибка, я ее не вижу!
можно еще счетчик сунуть в обработчик... правда скорее всего запутаюсь в переменных... чето так туплю непонятно где... вроде все просто.
Сообщение отредактировал AKukuruz - Воскресенье, 31 Июля 2016, 18:29 |
|
| |
Ordan | Дата: Понедельник, 01 Августа 2016, 03:38 | Сообщение # 10 |
Главный зомби
Сейчас нет на сайте
| AKukuruz, что то какая то ахинея а не код)
Код procedure draw_r(); //рисуем begin var nr: integer; nr:=+1; for nr := 0 to 3 do begin onmousedown:=MouseDown; if nr > 3 then break; end; end;
Что бы остановить цикл, в его тело нужно включить break; у тебя он был вне тела.
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
AKukuruz | Дата: Суббота, 06 Августа 2016, 18:33 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Вроде понятно... Но не до конца)). Мне надо через вводимый параметр f ограничить число рисуемых фигур... То есть нажал f раз и операция описываемая в событии не происходит.
Код procedure draw_r(f: integer); begin var i: integer;//хранение числа фигур i:=i+1; //при клике увеличивается на 1 for i := 1 to f do begin onmousedown:=MouseDown; if i > f then break; end;
В главном цикле число фигур передается через параметр в процедуру... но программа не работает так как мне нужно... сижу думаю почему...
пробовал repeat ... until f=3, тоже самое - не работает как хочу. кстати про табуляцию это да) ну просто сейчас это не так важно... мне щас важн понять в чем я ошибку постоянно делаю)) систематически причем...
Сообщение отредактировал AKukuruz - Суббота, 06 Августа 2016, 18:34 |
|
| |
Gudleifr | Дата: Среда, 17 Августа 2016, 15:41 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| Ну, AKukuruz, я рад, что за время моего отсутствия Вы наделали не очень много ошибок. Однако, огорчен, что все старые остались на месте: 1. непонимание, где кончается один оператор и начинается другой; 2. что работает до, а что после появления окна на экране; 3. присвоение указателя на ф-ию, не означает ее запуска. За все это я уже Вас ругал (и все ответы есть в моих постах). Бросайте заниматься фигней и начинайте учиться программировать!
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
|
|
| |