Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Работа с датой


Автор: Berliner 9.8.2005, 17:59
1 Надо чтобы в определенное время (например) каждый день запускать процесс(например копирование файла)

2 Есть база данных формат парадокс. Поле типа DAte. В этом поле дни рождения людей как это сделать чтобы каждый раз при запуски программы напоминала программа у кого день рождения людей.

Подскажите пожалуста наиболее простые решения

Автор: FRAGNATIC 10.8.2005, 01:41
для этого прога должна быть у тя всё время запущена!
Код

    SetTimer(MainFrm.handle, 1, Interval, @TimerProc);
Код

procedure TimerProc(hwnd: hwnd; uMsg, id: UINT; time: DWORD); stdcall;
begin
  KillTimer(Mainfrm.handle, id);
  //Do ....
end;

берёш время из БД сравниваешь с текушим отнимаешт текушее время от времени в БД получаеш интервал переводиш в милесекунды и заношиш в
Interval
в процедуре таймерпрок поздровляеш с ДР кого те надо!

Автор: vadims 10.8.2005, 02:52
1 можно использовать FRAGNATIC или планировщик задач
2 Так сканировать по этому полю по ключу или поставить фильтр при запуске и тупо их перебрать
Только тут еще вопрос а если программа запускается второй раз в один день - все те же поздравления повторно ???
Я бы создал отдельный файл куда вначале бы перенес записи новорожденных и по мере их поздравления метил что эта запись больше не нужна

Автор: mvdr 10.8.2005, 07:20
Цитата(Berliner @ 9.8.2005, 18:59)
1
пишется 2 программы: вторая - которая копирует
первая - засоывается в автозапуск и по времени (Time) запускает вторую программу.

я так понял п.2 это логическое продолжение п1.?
Цитата(Berliner @ 9.8.2005, 18:59)
2

1) в БД сделать поле, которое или T, или F. Если прога сегодня была запущена, то этот параметр F. С изменением даты - он превращается в Т. Соотв-но, если Т - то создается файл в который переносится отсортированный список людей у кого сегодня ДР.
2) В цикле считывать построчно, и запускать вторую программу, которая их бы поздравляла.


Хотя... если это напоминалка ТЕБЕ (пользователю), то можно сделат так: показывать (напоминать) каджые Х минут. Разумеется, что надо ввести тогда флажок, типа "Больше не показывать это окно сегодня") Или в опциях ставить через сколько оповещать (У раз в день)

Автор: Berliner 10.8.2005, 10:34
To fragnatic : Поподробнее опиши насчет копирование файла в определееное время
Да, прорамма все время будет запущена


TO Femida да это просто напоминалка пользователю. БУду пытаться сделать

Автор: Romikgy 10.8.2005, 11:12
Ксати здеся мона юзать nncron smile

Автор: FRAGNATIC 10.8.2005, 13:25
[/quote]Только тут еще вопрос а если программа запускается второй раз в один день - все те же поздравления повторно ???
Я бы создал отдельный файл куда вначале бы перенес записи новорожденных и по мере их поздравления метил что эта запись больше не нужна[quote]

Ну начнём с того что я просто не начал оисывать это! Дело в том что у меня похожоя программа! В не я сделал так из БД раз в 24 часа считываютя записи если нужно напомнить в эти 24 часа то эта записить копируется в отдельный файл при этом у записи свойство флага становится тру чтобы потом она не копировалась повторно в случаи экстрено завершения проги и последуешего её запуска! после чего раз в час другим таймером я прогибаюсь по скопированым записям если надо в течении этого часа напомнить то выстовляю таймер на то время на которое надо SetTimer при этом из файла удаляю эту запись! и заношу в другой файл выстовленый таймер (определёные данные) после чего если прога вдруг опять завершилаьс то при запуске из этого файла считываю все поставленые но не завершёные таймеры! отправляю напоминания и затем удаляю и из БД запись и из файла с актиынми таймерами)


Berliner что тебе именно не понятно?
Код

procedure TimerProc(hwnd: hwnd; uMsg, id: UINT; time: DWORD); stdcall;    
begin    
  KillTimer(Mainfrm.handle, id);    
  //Do ....    
end;

Вот в этой процедуре посылаешь поздравления)
Добавлено @ 13:27
Потом могу тебе более подробный код дать! Пока просто Дэлфи не устоновлена у меня!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)