Показать сообщение отдельно
  #1  
Старый 14.10.2010, 09:42
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию Пауза и остановка процедуры

Есть процедура. Которая может выполняться ну очень долго в силу большого объёма исходного материала. Ну например, какое-нибудь копирование, парсинг, постинг.

Так вот вопрос - как поставить выполнение на паузу, и как остановить. В качестве примера, приведу код процедуры с которой мне вчера помогли - копирование с задержкой:
Код:
procedure TForm1.FakeCheck;
var i:integer;
begin
for i := 0 to Memo3.Lines.Count - 1 do begin
StatusBar1.Panels.Items[0].Text:= Memo3.Lines[i];
delay(2); //тут задержка в секундах
ProgressBar1.Position:=Round(1000 * i/Memo3.Lines.Count-1);
end;
end;

Нужно обрабатывать её тремя кнопками.
Запуск, Пауза, Стоп

Если с запуском, всё прозрачно, то как её остановить, или прервать - только мысли.
Например, использовать конструкцию вроде Form1.Tag := 0; при запуске. По нажатию на кнопку паузы менять значение допустим на единицу, ну а при 2 - останавливать.
Ответить с цитированием