![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Я вообще не понимаю принципа построения планировщика! есть форма, в которой условия планировщика. Всё работает по таймеру. От потока отказался, т.к. надоели ошибки разные и непонятные, которых нет в таймере.
Непонятно, как мне сделать расписание, тоесть по расписанию запускать мою процедуру: 1. ежедневно - DateTimePicker1 2. раз в неделю в определённый день и время - DateTimePicker2 3. раз в месяц в определенный день и время - DateTimePicker3 При запуске проги запускается таймер и он должен проверять время и при достижении нужного запустить мою процедуру. Я НЕ ПОНИМАЮ как сделать условия!!! Процедура таймера
но это неправильно т.к sleep(edtinterval*1000); не должно быть! Нужно проверять условия так если щас время = времени указанном в планировщике и сегодня ещё процедура не зарускалась, то запустить мою процедуру, потом подождать до завтра 24 часа и опять запустить процедуру мою и так всё время. А вот как такое реализовать я не понимаю. ЭТО только 1 пример! а мне надо 3 условия реализовать: 1. ежедневно - DateTimePicker1 2. раз в неделю в определённый день и время - DateTimePicker2 3. раз в месяц в определенный день и время - DateTimePicker3 Помогите!!! ![]() З.Ы. ![]() --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
А зачем вообще sleep(edtinterval*1000) ?
Можн так Timer1.Interval := (edtinterval*1000); Можно проверять каждый тик таймера не насталоли время равное указанному в DateTimePicker1..2..3 etc. И если настало, то взводим программу и переставляем дату в пикерах на следующую. Да вообще полно всего можно придумать. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Неплохо бы вести лог событий которые были уже запущены.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
ну я и говорю, сколько не пробовал, не получается!
люди!!! ![]() --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Вопрос состоит в том как реализовать
![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Ой, забыл таймер тикает раз в секунду. Это сообщение отредактировал(а) ~FoX~ - 22.11.2005, 11:43 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А зачем изобретать велосипед? CreateWaitableTimer Устанавливаешь ему любой DateTime и говоришь "Повторять каждые N времени". |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Snowy
А вроде один фиг они оба WM_TIMER ловят? Хотя я согласен это проще.... Это сообщение отредактировал(а) ~FoX~ - 22.11.2005, 11:54 |
|||
|
||||
Albinos_x |
|
||||||||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
1. нужно иметь файл, где хранить данные о задании
Например в формате: ( время выполнения, тип выполнения(каждый день, еженедельно...), что делать) 2. желательно создать свою структуру данных, в которую передавать задания ожидающие выполнения к примеру:
далее необходимо при загрузке создавать список (перебираешь все записи и смотришь время старта, если установленное время больше текущего, то добавляешь в список, а так же проверяешь остальные условия выполнялось не выполнялось, если раз в недёлю, то надо ли добавлять и т.д.)
желательно сделать отдельной функцией, т.к. при переходе на новые сутки, нужно будет перезаписывать этот список. допустим будешь проверять задания каждую секунду, то надо запоминать предыдущую дату, и ставить условие : если предыдущая дата отличается от текущей, то перезаписать список. При проверке времени:
такой вариант не прокатит,т.к. допустим у тебя установлено время 12.12.00 ( не буду считать, но для примера это допустим будет равно 0.51222222000000), а компьютер вернёт более точное время, допустим 0.551222222222222211 и вероятность что время совпадёт очень мала, поэтому необходимо или синхронизировать часы программы и часы системы или сравнивать строки:
ещё хочу отметить, что DateTimePicker1.date вернёт значение вместе со временем, поэтому для перестраховки желательно использовать так: Trunc(DateTimePicker1.date) то же и со временем: frac(DateTimePicker1.Time) Добавлено @ 12:12 да ещё, после выполнения необходима из списка удалять задание приблизительно так:
ЗЫ: если есть ошибки или недочёты, прошу меня простить... когда писал очень спешил ![]() Это сообщение отредактировал(а) Albinos_x - 22.11.2005, 12:14 -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||||||||
|
|||||||||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нет, это не юзер-таймер, а таймер объект ядра. У Рихтера подробно описана работа с ним. На нем построен стандартный планировщик WinXP. Кроме того, он может выводить комп из спящего режима. |
|||
|
||||
h2o |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
DateTimePicker1.Date := Now + 1; //Плюс один день - а тут как надо? Что вместо +1? Вот так:? DateTimePicker1.Date := Now + 24часа*60минут*60секунд? Добавлено @ 13:04 Albinos_x принял к сведению! но у меня более тупо реализовано! хотя... --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
||||||
|
|||||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Snowy А где его создавать? Как с ним работать? когда включать/выключать? и т.д.?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Я же сказал - у Рихтера все подробно расписано. Найди в инете книгу: "Джефри Рихрер - Создание эффективных WIN32-приложений" в chm формате. Не раз еще пригодится. Это Библия WinAPI программиста. Про таймеры читай в главе 9. |
|||
|
||||
FRAGNATIC |
|
|||
![]() ..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
ещё SetTimer мона =)
|
|||
|
||||
Albinos_x |
|
||||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
1 - одни сутки.
чтобы добавить время желательно использовать EncodeTime пример:
где 5 -часы - 30 - минуты - 20 - секунды -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |