![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запуск процедуры в определенное время [Win2k]
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 Плохиш
С рассчетом интервала в милисекундах.