Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать сообщение [D7, XP]


AlekseyB ©   (2008-09-17 08:41:00) 

Подскажите плиз...., как сделать так чтобы у меня выскакивало сообщение в нужный момент, т.е. надо сделать единожды, ежедневно, ежемесячно, ежегодно !!! Единожды и ежедневно впринципе вроде получилось, а вот как сделать ежемесячно и ежегодно ? Заранее спасибо !!!!


Правильный$Вася   (2008-09-17 12:01:00) [1]


> переставляем системную дату

вот интересно порассуждать, какая же дельта во времени будет...
минута=год...


brother   (2008-09-17 11:41:00) [2]

> долго ждать придется, чтобы протестировать

комп- машина времени ;)
переставляем системную дату, и мы в прошлом/настоящем/будущем)


KilkennyCat   (2008-09-17 11:39:00) [3]

главное - не выключить нечаянно комп.


clickmaker   (2008-09-17 11:26:00) [4]

> ежегодно ?

долго ждать придется, чтобы протестировать


Правильный$Вася   (2008-09-17 10:55:00) [5]


> как сделать ежемесячно и ежегодно

а теперь объясни, что ты понимаешь под этим
ежемесячно - это раз в месяц, но когда именно?


Vlad Oshin   (2008-09-17 10:51:00) [6]

Время - суть дробное машинной число
Дробные машинные числа сравниваются не наравенство, а на попадение в интервал.
a=b ~ (a-b)<0.001


Dennis I. Komarov   (2008-09-17 10:40:00) [7]

Сделай чтоб выскакивало сообщение и запускай его через Scheduler Windows - и тебя никто не убъет за постоянно висящий в память никому не нужный процесс...


han_malign   (2008-09-17 10:28:00) [8]


> В таймере интервалами в час

или TApplication.OnIdle

> далее сравниваем это с нашей записью

- проверяем, что нужная отсечка(и) времени поподает в полуинтервал (LastCheck, Now]
- если попало - выполняем событие(я), изменяем расписание в соответсвии с планом
- запоминаем время последней проверки(LastDayTime:= Now (запоминаем в файл/реестр на случай перезапука))

З.Ы. Если делать в OnIdle, чтобы не загружать процессор - необходимо "прореживать" проверки расписания - проверкой времени ближайшего запланированого события(Now >= MinEventTime), которое может быть временем реально запланированного события, шагом(MinEventTime = LastCheck+step) или их комбинацией...


brother   (2008-09-17 08:50:00) [9]

> Единожды и ежедневно впринципе вроде получилось,

видимо кривой алгоритм, раз ежемесячно и ежегодно не получается ;)

Алгоритм: В таймере интервалами в час(может даже больше) делаем проверку текущей даты, месяца, года; далее сравниваем это с нашей записью, переменной или массивом в которых хранятся указанные дни месяцяца и года для сработки показа сообщений!
Если совпало - показываем сообщение...


Наверх

Титульная страница Поиск, карта сайта Написать письмо