Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как правильно использовать Timer ?


Автор: Sice 26.1.2011, 23:00
Есть код:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 data:=tstringlist.create;
 data.Add('get=5');
 data.Add('method=game');
 data.Add('user='+Edit1.Text);
 data.Add('key='+Edit2.Text);
 IdHTTP1.HandleRedirects:=true;
 PageProfile:=IdHTTP1.Post('http://site/game.php?', data);
 Data.Free;
 Memo1.Text:=PageProfile;
 end;

Мне нужно, следующее: нажимаю на кнопку, запрос отправляется и чтобы он запускался через каждые 16 минут, уже без нажатия на кнопку.
Попробовал таймер. Поставил сначала на него Enabled:=False, включил его в начале события кнопки, но ничего не получилось, программа начал лагать ужасно.

Подскажите пожалуйста, как отправлять (воспроизводить код) каждый раз, через 16 минут, уже без нажатия каких-либо кнопок.

Благодарю заранее.

Автор: Данкинг 26.1.2011, 23:07
Что именно лагает-то? Таймер для того и нужен, чтобы запускать события через заданные интервалы времени.

Автор: Sice 26.1.2011, 23:46
Цитата(Данкинг @ 26.1.2011,  23:07)
Что именно лагает-то? Таймер для того и нужен, чтобы запускать события через заданные интервалы времени.

можно пример пожалуйста?

Автор: Данкинг 26.1.2011, 23:53
Цитата(Sice @  26.1.2011,  23:46 Найти цитируемый пост)
можно пример пожалуйста? 

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Interval:=5000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 showmessage('Прошло 5 секунд!');
end;


Автор: northener 27.1.2011, 00:17
Цитата(Sice @  26.1.2011,  23:46 Найти цитируемый пост)
можно пример пожалуйста? 

Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Button1.Click;
end;

 smile 

Автор: Poseidon 27.1.2011, 09:33
Sice, "лагать" программа, вероятнее всего, стала не из-за таймера, а из-за Post. Точнее из-за того, что получает данные из интернета в основном потоке. Пока выполняется Post, а другими словами, пока идет загрузка из интернета, программа "замрет".

Автор: Scooter 31.1.2011, 11:50
прога изза таймера не лагает... при нажатии на кнопку сразу ставишь таймер в Timer1.Enabled:=True; Ну задаешь нужный интервал соответсвенно и ссылку на процедуру кнопки в обработчике таймера ставишь... 

Чтото в процедуре не то тебе правильно подсказали...  Вероятнее всего эту байду нажно использовать в потоке:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 data:=tstringlist.create;
 data.Add('get=5');
 data.Add('method=game');
 data.Add('user='+Edit1.Text);
 data.Add('key='+Edit2.Text);
 IdHTTP1.HandleRedirects:=true;
 PageProfile:=IdHTTP1.Post('http://site/game.php?', data);
 Data.Free;
 Memo1.Text:=PageProfile;
 end;



а там в потоке через цикл While и процедуру Sleep(интервал в милисекундах); работаешь со своим кодом...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)