IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> цикл, возник один вопрос
сообщение
Сообщение #1


Гость






подскажите пожалуйста
у меня сейчас бесконечный цикл, я хочу сделать выход из этого цикла по нажатию кнопки, как это сделать? blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






может я некорректно задала вопрос
как проверить нажата кнопка или нет?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


можно чуть подробнее?
где этот цикл, к чему он привязан? внутри какого-то обработчика события?

вариант использования RadioButton или CheckBox не рассматривается? Или, может, обойтись вообще без бесконечного цикла (пользоваться таймером, например).


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






я пишу прогу, где шар отбивается от стенок, по нажатию кнопки мне надо, чтобы прога завершилась
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






т.е. закончился цикл движения шара
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, а что насчет ответа на вопрос:
Цитата
где этот цикл, к чему он привязан?


Понимаешь, пока неизвестно, как организован цикл, возможно, его ВООБЩЕ нельзя остановить. Возможно, придется кое-что добавлять... А гадание на кофейной гуще - это не сюда...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






цикл возникает при двойном щелчке по форме
Код

constructor  bol.createe(sx,sy:integer;box:tPaintBox);
begin
  currX:=sX;
  currY:=sY;
  destX:=sX;
  destY:=sY;
  deltaX:=0;
  deltaY:=0;
  shar(box,sx,sy);
end;

procedure bol.shar(box:tPaintBox;sdx,sdy:integer);
var key, x,y:integer;
begin
    Box.Canvas.Pen.Width:=3;
    Box.Canvas.Pen.Color:=clred;
    Box.canvas.ellipse(currX-25,currY-25,currX+25,currY+25);
    Box.canvas.font.name:='Arial';
    Box.canvas.font.style:=[fsBold,fsItalic];
    Box.canvas.font.size:=50 div 5;
    x:=sdx -25+(50 - Box.canvas.textwidth('sony'))div 2;
    y:=sdy -25+(50 - Box.canvas.textheight('sony'))div 2;
    Box.canvas.textout(x,y,'sony'); Box.Canvas.Pen.Color:=clBtnFace;
end;

procedure bol.del(box:tPaintBox);
begin
  Box.Canvas.Pen.Width:=3;
  Box.Canvas.Pen.Color:=clBtnFace;
  Box.canvas.ellipse(currX-25,currY-25,currX+25,currY+25);
end;

procedure bol.run0(box:tPaintBox);
begin
  while (curry-25)<>0 do begin
    time;
    del(box);
    currx:=currx+1;
    curry:=curry-1;
    shar(box,currx,curry);
  end;
  run1(box);
end;

procedure bol.time;
var t:integer;
begin
  t:=5000000;
  while t<>0 do t:=t-1;
end;

procedure bol.run1(box:tPaintBox);
begin
  while ((currx+25)<609) and ((curry+25)<609) and ((currx-25)>0) do begin
    time;
    del(box);
    currx:=currx+1;
    curry:=curry+1;
    shar(box,currx,curry);
  end;
if (currx+25)>608 then run2(box);
if (curry+25)>608 then run3(box);
if (currx-25)<1 then run4(box);
end;

procedure bol.run2(box:tPaintBox);
begin
  while ((curry-25)>0) and ((curry+25)<609) and ((currx-25)>0) do begin
    time;
    del(box);
    currx:=currx-1;
    curry:=curry+1;
    shar(box,currx,curry);
  end;
if (curry-25)<1 then run1(box);
if (curry+25)>608 then run3(box);
if (currx-25)<1 then run4(box);
end;

procedure bol.run3(box:tPaintBox);
begin
  while ((curry-25)>0) and ((currx+25)<609) and ((currx-25)>0) do begin
    time;
    del(box);
    currx:=currx-1;
    curry:=curry-1;
    shar(box,currx,curry);
  end;
if (curry-25)<1 then run1(box);
if (currx+25)>608 then run2(box);
if (currx-25)<1 then run4(box);
end;

procedure bol.run4(box:tPaintBox);
begin
  while ((curry-25)>0) and ((currx+25)>0) and ((curry+25)>0) do begin
    time;
    del(box);
    currx:=currx+1;
    curry:=curry-1;
    shar(box,currx,curry);
  end;
if (curry-25)<1 then run1(box);
if (currx+25)>608 then run2(box);
if (curry+25)>608 then run3(box);
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ух ты blink.gif

Да у тебя не цикл, а рекурсия... Отсюда так просто не выйдешь....
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.09.2020 4:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name