![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прервать цикл? [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;