Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

запуск процедуры в определенное время   Найти похожие ветки 

 
Phoenix9000 ©   (2005-06-02 13:15) [0]

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

Есть задача.

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

Например:

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

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

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


 
Digitman ©   (2005-06-02 13:16) [1]


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


тоько не говори, что тебе вообще ничего не понятно


 
Phoenix9000 ©   (2005-06-02 13:22) [2]

Да проблемма в общем то в следующем:

я могу присвоить переменной значение системного времени в момент запуска программы. Но значение переменной типа Date. А в таймере значение свойства Interval - типа cardinal.

Как осуществить перевод остатка времени после запуска программы до необходимого для старта процедуры т.е. как вычислить эту разницу во времени и перевести ее в милисекунды?


 
Jeer ©   (2005-06-02 13:26) [3]

По таймеру сравнивай системное время с заданным.


 
Ega23 ©   (2005-06-02 13:27) [4]

Возьми не date а GetTickCount - это, вроде, тоже Cardinal...


 
Плохиш ©   (2005-06-02 13:31) [5]

>Phoenix9000 ©   (02.06.05 13:22) [2]

У тебя проблема с расчётом интервала между двумя звачениями времени в миллисекундах? или в присвоении полученного значения таймеру?


 
Phoenix9000 ©   (2005-06-02 13:31) [6]

To jeer

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

To Ega23

А как его завязать на сравнение системного времени ?
Как высчитать разницу между заданным и системным временем?

Если возможно, небольшой пример.


 
Phoenix9000 ©   (2005-06-02 13:33) [7]

to Плохиш

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


 
Digitman ©   (2005-06-02 13:34) [8]


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


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


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

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


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

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

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


 
Digitman ©   (2005-06-02 13:39) [11]


> [9]


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


 
Phoenix9000 ©   (2005-06-02 13:41) [12]

To Плохиш

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

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

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


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

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

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

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


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


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

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


 
Digitman ©   (2005-06-02 13:52) [15]


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


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

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

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


 
Phoenix9000 ©   (2005-06-02 13:54) [16]

To Jeer

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

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


 
Phoenix9000 ©   (2005-06-02 13:57) [17]

To Antonn и To Digitman

Поясняю:

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


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

MilliSecondsBetween

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


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

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

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


 
Phoenix9000 ©   (2005-06-02 14:01) [20]

To Плохиш

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

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


 
Digitman ©   (2005-06-02 14:01) [21]


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



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


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

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

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


 
Jeer ©   (2005-06-02 14:04) [22]

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

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


 
Antonn ©   (2005-06-02 14:18) [23]

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;


 
Antonn ©   (2005-06-02 14:20) [24]

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


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


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


гениально !


 
Antonn ©   (2005-06-02 14:30) [26]

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



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.028 c
1-1118321930
arant
2005-06-09 16:58
2005.06.29
ClientDataSet с вложенным набором данных


14-1117491469
KilkennyCat
2005-05-31 02:17
2005.06.29
Если кому нужна работа в Петербурге


4-1114651008
rolex
2005-04-28 05:16
2005.06.29
Как удалить файл занятый приложением???


14-1117791500
emfw
2005-06-03 13:38
2005.06.29
Физическая модель


3-1116003967
seregka
2005-05-13 21:06
2005.06.29
Непонятная ошибка