Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.038 c
3-1116515179
Karlson
2005-05-19 19:06
2005.06.29
Фильтр в компоненте TTable и ему подобным


3-1116841354
ass1
2005-05-23 13:42
2005.06.29
isc4.gdb


3-1116440985
Сергей2345
2005-05-18 22:29
2005.06.29
Поможет ли Delfi?


14-1117777034
break
2005-06-03 09:37
2005.06.29
Исходники предка


1-1117727055
Серьезный Сэм
2005-06-02 19:44
2005.06.29
Как удалить файл с меткой "только для чтения"?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский