Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

запуск процедуры в определенное время [Win2k]


Страницы:   1 2

Phoenix9000 ©   (2005-06-02 13:15:00) 

Доброго времени суток, уважаемые мастера.

Есть задача.

При запуске программы она должна проверять системное время, далее запускать таймер и в определенное системное время запустить процедуру на выполнение.

Например:

программа запущена в 12.00 . Далее она должна просчитать, сколько ей осталось до запуска процедуры и запустить ее в 15.00

Как можно реализовать данный алгоритм?

Заранее спасибо за любые примеры и ответы.


Antonn   (2005-06-02 14:30:00) [1]

Digitman ©   (02.06.05 14:25) [25]
я тоже так думаю:)


Digitman   (2005-06-02 14:25:00) [2]


> Antonn ©   (02.06.05 14:18) [23]


гениально !


Antonn   (2005-06-02 14:20:00) [3]

приятная мелочь к [23]
var _b:boolean;


Antonn   (2005-06-02 14:18:00) [4]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (formatdatetime('hh:nn:ss',now)=formatdatetime('hh:nn:ss', DateTimePicker1.Time))and not(_b) then begin
   _b:=true;
   //ура, она сработала...
end else
if not(formatdatetime('hh:nn:ss',now)=formatdatetime('hh:nn:ss', DateTimePicker1.Time)) then _b:=false;
end;


Jeer   (2005-06-02 14:04:00) [5]

Плохиш ©   (02.06.05 13:57) [18]

Да нет, парень чего-то серьезно не догоняет.
Вот и пробуем.:)


Digitman   (2005-06-02 14:01:00) [6]


> Проверка определит, что заданное время не соответствует
> системному



> А дальше что?


а дальше - тереби админа, чтобы он наконец-то реализовал таки периодическую синхронизацию времени на сетевых хостах с атомными часами на спец.хостах в интерсети

тогда сист.время будет соответствовать реальному времени.

и уж ежели сейчас 5:00AM, то "долбануть" в 4:00AM сегодня уже никак не посчастливится) ... только - завтра)


Phoenix9000   (2005-06-02 14:01:00) [7]

To Плохиш

Пасибо, буду пробовать :-)

Извините, если напряг :-)


Jeer   (2005-06-02 14:00:00) [8]

Phoenix9000 ©   (02.06.05 13:57) [17]
С какой точностью ?

Jeer ©   (02.06.05 13:26) [3] - задача решается.


Плохиш   (2005-06-02 13:57:00) [9]

MilliSecondsBetween

Всё закрывайте ветку, нафик :-)


Phoenix9000   (2005-06-02 13:57:00) [10]

To Antonn и To Digitman

Поясняю:

Независимо от времени запуска программы (любое время суток) необходим запуск определенной процедуры программы в заданное время, например в 15.00.


Phoenix9000   (2005-06-02 13:54:00) [11]

To Jeer

Проверки через определенные промежутки времени смысла не имеют. Допустим программу запустили в 13.41 . Запуск процедуры должен быть произведен в 15.00 . Проверка определит, что заданное время не соответствует системному. А дальше что?

Проще один раз проверить системное и заданное время, определить разницу и запустить таймер на эту разницу.


Digitman   (2005-06-02 13:52:00) [12]


> сижу, пытаюсь сообразить, чего нужно-то...


да хз что ему нужно)

то ли чтобы долбануло ровно в H часов M минут S секунд D дня (или не долбануло вообще, если уже проехали), то ли чтобы долбануло через X времени после старта процесса

это же страшно сложно - связать два слова в предложение, чтобы народ вокруг сразу понял, об абсолютном или об относительном времени идет речь)


Antonn   (2005-06-02 13:48:00) [13]


> программа запущена в 12.00 . Далее она должна
> просчитать, сколько ей осталось до запуска процедуры и
> запустить ее в 15.00

сижу, пытаюсь сообразить, чего нужно-то...
1. программа запускается, и определяет время срабатывания через определенный интервал.
2. программа запускается и определяет время до запуска, установленого заранее.


Jeer   (2005-06-02 13:47:00) [14]

Phoenix9000 ©   (02.06.05 13:31) [6]
Объясни почему

Еще вариант - WaitableTimer

>запустить ее в 15.00
не удасться, будет погрешность из-за квантованности времени.


Phoenix9000   (2005-06-02 13:41:00) [15]

To Плохиш

Веришь, нет, не работает справка вообще на моей машине.

Delphi2005, дистрибутив такой, что справки не было. Так что увы, посмотреть не могу.

Примерчик бы, а ... :-)


Digitman   (2005-06-02 13:39:00) [16]


> [9]


уж не "черные" ли "вдовы" у нас завелись тут ?)


Плохиш   (2005-06-02 13:35:00) [17]

>Phoenix9000 ©   (02.06.05 13:33) [7]

Для халявщиков Борланд придумал соответствующую функцию, которая описана в справочной системе Delphi.


злобная танька   (2005-06-02 13:35:00) [18]

timer1.interval := 3*60*60*1000;
через 3 часа долбанёт!


Digitman   (2005-06-02 13:34:00) [19]


> постоянное сравнение системного времени с заданным - вариант
> непреемлеммый


чтой-то вдруг ?


Phoenix9000   (2005-06-02 13:33:00) [20]

to Плохиш

С рассчетом интервала в милисекундах.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо