![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
1. указывать все настройки (их туча!!!)
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Так можно отделить мух от котлет;) Сервис занимается тем, что по расписанию выполняет свои задачи, а отдельное приложение используется для настроек. Как тебе такой вариант? -------------------- |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
по началу я тоже так хотел, но: я неумею писать сервисов и вряд ли разберусь! (хотя это вообще был бы идеальный вариант, т.к. юзер бы вообще ничего не видел.)
Я думал, и мне больше по душе понравился вариант форма+трэй+поток+автозапуск проги при загрузке винды! Прога висит в трее, а поток (hThread или Таймер или WaitAbleTimer) сверяет настройки и запускает процедуру! Самое сложное- это то что я не понимаю как реализовать проверку расписания. При запуске проги она загружает из ИНИ настройки все, при закрытии записывает. Далее из формы из ее VCL компонентов берутся настройки расписания, сравниваются и если совпало-то запускается моя процедура! А вот как проверку этих условий реализовать? Вот вся проблема? --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Это просто. Свой первый сервис я написал, просто взяв его из справки и разобравшись. -------------------- |
|||
|
||||
Farnsworth |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 30.11.2005 Репутация: нет Всего: нет |
+1 - это и значит добавить один день. Если тебе нужно добавить 1 час, то нужно сделать +1/24. Если одну минуту: +1/24/60. Понятно? Переменная TDateTime - это число, равное количеству дней, прошедших с 30.12.1899 (в Delphi). Если прошло пол дня, значит значение 0.5.
"Равно" конечно сравнивать нельзя, но достаточно сравнить с интервалом, равным, скажем, двум интервалам таймера (с запасом):
|
||||||
|
|||||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
h2o
Если хочешь, давай вместе напишем каркас планировщика. В случае согласия в PM дам координаты для связи. -------------------- |
|||
|
||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Farnsworth Вот ты написал что надо так:
А я сравнивал даты! значения дат в любом случае должны совпадать, поэтому сравнение по "=" - допустимо. А вот время я сравнивал условием ">=", что должо было работать! а не работало! попробую с сравнением которое ты написал! суть то в том что непонятно как реализовать саму процедуру проверки расписания (тоесть процедуру сравнения вемени) --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Farnsworth |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 30.11.2005 Репутация: нет Всего: нет |
1. Когда-то я заметил, что DataTimePicker возвращает не только дату, но и время. Так что дату, полученную от DateTimePicker нужно приводить к 00 часам 00 минутам, то есть Date1:=int(DateTimePicker1.Date);
2. Точно не помню, но кажется функция Date тоже дает не 00 часов 00 минут, так что и её результат тоже нужно округлять: Date2:=int(Date); 3. В первом приведенном тобою коде ты использовал функцию Now - он тем-более даёт и дату и время, так что: Date3:=int(Now); 4. И вот тогда ты можешь сравнивать даты по "=". 5. Насчёт процедуры проверки времени - если у тебя проверка запуска по расписанию стоит в обработчике таймера, то достаточно использовать то, что я тебе написал выше. Кстати лучше даже сделать так:
Добавилось "*2". Винда тормозит, и таймер может сработать не через 1000 милисекунд, а 1500 или даже намного больше (например, при чтении дискеты или сбойного CD-ROM'а). Лучше интервал самого таймера поставить 10 или 20 секунд (зачем каждую секунду-то проверять, винду нагружать?). 6. Не забудь, что если у твоей программы-планировщика есть возможность что-то запускать с периодом в 1 сутки, то нужно предусмотреть такой вариант, что, к примеру, твою программу (или саму Виндоуз, если твоя программа в авто-загрузчике будет прописана) могут запустить чуть позже срока срабатывания одного из ежедневных событий, например с опозданием на 1 минуту, и тогда это событие уже никогда не произойдет. Так что в случае ежедневных заданий их нужно проверять if DailySheduledTime<=Now then begin {обработчик ежедневного события}; DailySheduledTime:=Now+1; end;. Этот пример тебе уже приводил ~FoX~. 7. Если в твоей программе есть возможность установить событие на какое-то определенное время, то по той-же причине, что и в пункте 6, оно может не сработать из-за опоздания запуска программы всего лишь в 1 минуту. По-этому в модуль запуска программы лучше поставить ещё одну процедуру проверки этих событий, но проверять уже с интервалом в, скажем, 10 минут (или лучше пускай этот "запас" устанавливает сам пользователь в "Дополнительных (advanced) настройках" каких-нибудь):
|
||||
|
|||||
Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
не Date возвращяет чистую дату...
про это я писал в начале... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
Albinos_x |
|
||||||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
если делать сравнение:
то всё расно сработает, но в этом случае сразу после срабатывания необходимо удалять задание из списка ожидания, иначе будет постоянно выполняться.... можно конечно добавить ещё к записи признак выполнялось/невыполнялось... но это имхо не эффективно... а вот:
эт странно... попробуй в пошаговом режиме посмотреть какие данные она возвращяет и найти ошибку
эт в принципе не нужно... хотя в проге можно предусмотреть вариант с настройкой проги... допутим напоминать выполненые задания... и при загрузке проги проверять какие сегодня должны были выполниться задания и отображать список... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||||||
|
|||||||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
h2o я набросал каркас планировщика без таймера, со вторым
потоком. Проект сырой - нет отображения, загрузки и сохранения заданий и еще много чего но вроде то что просил... http://alexei-s1.narod.ru/Sheduler.rar -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
alexeis1 ругается на RecodeMilliSecond(tt, 0);
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
h2o на остальные не ругается?
(не могу сам проверить на работе нет палитры Samples) -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
h2o |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
вообщем, когда указываю все настройки, указываю ехе, нажимаю ОК, он говорит "invalid float point" и показывает в Delphi на эту строку, я может неправильно ввожу что?
Добавлено @ 11:38 и это происходит токо когда ехе указываю. у меня в поле едит ничё не выводится... --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |