Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> timer 
:(
    Опции темы
darkcoder
Дата 5.12.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



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

Второй вопрос, то же самое только время 'спячки' должно случайно выбираться в диапазоне от 10 до 60 секнуд?
Спасибо!
PM MAIL   Вверх
ivan219
  Дата 5.12.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Код

Sleep(1000);

PM MAIL ICQ   Вверх
THandle
Дата 5.12.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



WaitForSingleObject. Я лично это предпочитаю.
PM   Вверх
Alexeis
Дата 5.12.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



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

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
darkcoder
Дата 5.12.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Почему с использованием такой конструкции окно появляется не сразу а после того как программа отработает то есть через 5 сек?

Код

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


Так как делать то чтоб правильно было? Может есть рабочий примерчик на TTimer?
PM MAIL   Вверх
THandle
Дата 5.12.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



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


Это сообщение отредактировал(а) THandle - 5.12.2007, 15:49
PM   Вверх
Alexeis
Дата 5.12.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Lexicss
Дата 5.12.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



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


Здесь лучше в форме использовать обработчик сообщений и посылать ему сообщения когда нужно снять с пацзы и выполнять что=-то дальше, а в качестве действий использовать соответсвующую процедуру/функцию.
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.