Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 19:34   #1
s1d0r
 
Регистрация: 26.05.2009
Сообщений: 7
По умолчанию Приостановка цыкла for to do и дальнейшее продолжение работы

Вот у меня есть цыкл и таймер
Язык: Delphi 7

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   for i:=StrToInt(LabeledEdit1.Text) to StrToInt(LabeledEdit2.Text) do 
      begin
        ...
        ...
        Timer1.Enabled:=true;
        //сдесь должна быть приостановка цыкла и с этого места продолжение его.
        ...
        ...
      end;
   ...
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   If .... then 
      begin
         ....
         ....
         timer1.Enabled:=false;
         //здесь должна быть команда продолжения ранее остановленого цыкла
      end;  
end;
Вопрос:
как сделать так что бы цыкл можно было остановить а потом по выполнению условия в таймере продолжыть?

Последний раз редактировалось s1d0r; 26.05.2009 в 19:43. Причина: Опечатка
s1d0r вне форума Ответить с цитированием
Старый 26.05.2009, 19:51   #2
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

i сделать глобальной.
и переделать for на if
for exampe.
-----------------
или запуск потока
---------------
Don't worry be happy

Последний раз редактировалось Izhic; 26.05.2009 в 20:18.
Izhic вне форума Ответить с цитированием
Старый 26.05.2009, 20:21   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Объявим глобальную переменную stopcicle: boolean; и присвоим ей изначально False;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   for i:=StrToInt(LabeledEdit1.Text) to StrToInt(LabeledEdit2.Text) do 
      begin
        ...
        ...
        stopcicle:=True;
        Timer1.Enabled:=true;
        //здесь должна быть приостановка цикла и с этого места продолжение его.
        while stopcicle do
        Application.ProcessMessages;
        ...
        ...
      end;
   ...
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   If .... then 
      begin
         ....
         ....
         timer1.Enabled:=false;
         stopcicle:=False;
         //здесь должна быть команда продолжения ранее остановленого цикла
      end;  
end;
mihali4 вне форума Ответить с цитированием
Старый 27.05.2009, 08:54   #4
ypgon
Новичок
Джуниор
 
Регистрация: 13.05.2009
Сообщений: 1
По умолчанию

еще проще:
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=StrToInt(LabeledEdit1.Text) to StrToInt(LabeledEdit2.Text) do
begin
...
...
Timer1.Enabled:=true;
//здесь должна быть приостановка цикла и с этого места продолжение его.
while Timer1.Enabled do
Application.ProcessMessages;
...
...
end;
...
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If .... then
begin
....
....
timer1.Enabled:=false;
//здесь должна быть команда продолжения ранее остановленого цикла
end;
end;
ypgon вне форума Ответить с цитированием
Старый 27.05.2009, 16:58   #5
s1d0r
 
Регистрация: 26.05.2009
Сообщений: 7
По умолчанию

mihali4, ypgon Благодарю за ответы. Взял последний вариант =)
s1d0r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приостановка выполнения цикла ACE Valery Общие вопросы C/C++ 21 19.11.2011 12:40
приостановка выполнения процедуры BESS Общие вопросы Delphi 5 15.09.2008 00:53
Приостановка цикла для выполнения внешней программы Uomo Общие вопросы Delphi 3 04.04.2008 11:48
НУЖНО НАПИСАТЬ ПРОГУ И ДАЛЬНЕЙШЕЕ ЕЕ СОПРОВОЖДЕНИЕ! shurpet Фриланс 2 03.09.2007 18:13
Приостановка программы Hintman Общие вопросы Delphi 6 14.04.2007 23:38