Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как прервать цикл? [D6, WinME]


Коля ©   (2002-05-20 04:02:00) 

Есть кнопка Cancel, дающая возможность пользователю прервать цикл (for i:= 0 to HtNum do). Как это правильно сделать?


AFROLOV   (2002-05-20 11:11:00) [1]

Кстати, возможно надо исключить вожможность запуска 2 экземпляров цикла одновременно.


AFROLOV   (2002-05-20 10:51:00) [2]

Модификация кода Slym (20.05.02 06:23) для организации паузы.
br:boolean; //глобальная переменная
ex:boolean; //глобальная переменная
...
br:=false;
while (i<10000) do
begin
application.processMessages;
if br then break;
if ex=true then
begin
....Твой код
i:=i+1;
end;
end;

procedure TForm1.Button1Click
...
br:=true;//завершить цикл
....

procedure TForm1.Button2Click
....
ex:=not ex;//приостановить цикл



PVOzerski   (2002-05-20 10:48:00) [3]

Если в рамках одного потока, то что-нибудь такое:
type
tForm1=class(tForm)
...
private
pause:boolean;
...


procedure tForm1.Button1Click(Sender:tObject);
begin
pause:=true;
end;

procedure tForm1.Button2Click(Sender:tObject);
begin
pause:=false;
end;

procedure tForm1.DoCycle;
var
i:cardinal;
begin
i:=0;
while i<=HtNum do
begin
Application.ProcessMessages;
if not pause then
begin
...
inc(i);
end;
end;
end;

Только всё это называется "приостановить", а не "прервать".


Song   (2002-05-20 10:22:00) [4]

После Break никак.


Anatoly Podgoretsky   (2002-05-20 10:17:00) [5]

Как паузу органиховываешь? По окончанию паузы возобновится автоматически


Anatoly Podgoretsky   (2002-05-20 10:15:00) [6]

Как паузу органиховываешь? По окончанию паузы возобновится автоматически


Song   (2002-05-20 10:15:00) [7]

После Break никак.


Коля   (2002-05-20 10:10:00) [8]

Спасибо. А каким образом возобновить цикл после паузы?


valley   (2002-05-20 09:50:00) [9]

Break


Slym   (2002-05-20 06:23:00) [10]

Цикл организуй в потоке, иначе нока цикл крутится приложение "виснет".
Или


br:boolean; //глобальная переменная
br:=false;
for i:=0 to 10000 do
begin
if br then break;
application.processMessages;
....Твой код
end;

procedure TForm1.Button1Click
br:=true;


Наверх

Титульная страница Поиск, карта сайта Написать письмо