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


Автор: darkcoder 5.12.2007, 14:27
Привет
Подскажите как сделать чтобы программа ничего не делала n секунд.
Timer1.Enable:=true;
Timer1.Interval:=1000;
while Timer1.Enable=true do.. 
Почему сваливается б бесконечный цикл(из цикал не вызывает событие ontimer)? 
Как сделать правильно?

Второй вопрос, то же самое только время 'спячки' должно случайно выбираться в диапазоне от 10 до 60 секнуд?
Спасибо!

Автор: ivan219 5.12.2007, 14:41
Код

Sleep(1000);

Автор: THandle 5.12.2007, 14:48
WaitForSingleObject. Я лично это предпочитаю.

Автор: Alexeis 5.12.2007, 15:21
Цитата(darkcoder @  5.12.2007,  14:27 Найти цитируемый пост)
Подскажите как сделать чтобы программа ничего не делала n секунд.

  Так программа под виндовс это ленивец, если нет событий и так ничего не делает smile , напротив, для того чтобы она что-то делала ее нужно "пнуть". Если нужно запретить юзеру что-то делать, то нужно просто заблокировать все поля ввода, кнопки т.д.

Автор: darkcoder 5.12.2007, 15:35
Почему с использованием такой конструкции окно появляется не сразу а после того как программа отработает то есть через 5 сек?

Код

procedure TForm2.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('1');
  sleep(5000);
  Memo1.Lines.Add('2');
end;


Так как делать то чтоб правильно было? Может есть рабочий примерчик на TTimer?

Автор: THandle 5.12.2007, 15:37
darkcoder, окно то создаётся. А вот показывается оно с 5-ти секундной задержкой из-за вызова Sleep(5000).

Автор: Alexeis 5.12.2007, 15:46
  Да забудьте вы про sleep в основном потоке, глупость это! В основном потоке тока таймер, sleep оставьте для дополнительного потока.

Автор: Lexicss 5.12.2007, 22:41
Вообщем, на скока я понял тебе нужно сэмитировать паузу. 
Sleep использовать некрасиво, т.к. блокируется весь основной поток - это нехороший стиль программирования. Да и лажа получиться, пока будет работать sleep - форма будет заблокирована и не будет реагировать ни на какие события.


Здесь лучше в форме использовать обработчик сообщений и посылать ему сообщения когда нужно снять с пацзы и выполнять что=-то дальше, а в качестве действий использовать соответсвующую процедуру/функцию.

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