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


Автор: Михалыч 14.7.2013, 21:39
Нужно отслеживать что бы не могли изменить дату в большую сторону, например если сегодня 5 число, то при попытке выставить 6 число программа распознавала это как ошибку.
Но надо не просто тупо записать сегоднешнее число при закрытии программы, а при открытии сравнить, а надо понять, переустанавливали число, или оно поменялось  по истечению суток.

Автор: northener 14.7.2013, 22:46
Сравнить дату/время ПК с сервером точного времени в Интернете не подойдет?

Автор: Михалыч 14.7.2013, 23:03
Мысль хорошая,я уже думал об этом, а вот если нет интернета? 
А винда ни куда не прописывает если были изменения в системном времени стандартным способом через timedate.cpl ?

Автор: northener 14.7.2013, 23:22
Цитата(Михалыч @  14.7.2013,  23:03 Найти цитируемый пост)
А винда ни куда не прописывает если были изменения в системном времени стандартным способом через timedate.cpl ? 

О таком не слышал.
Но во всяком случае дату/время можно изменить и без участия  timedate.cpl. См. WinAPI SetSystemTime.

Автор: MetalFan 16.7.2013, 12:02
ну ничего не мешает проге сохранять (в памяти или на диске) текущее дату/время и в определенный промежуток (н-р раз в минуту) проверять текущее дату/время с сохраненными. Если разница более, чем минута (при проверке раз в минуту), то значит дату/время переводили...

Автор: Poseidon 16.7.2013, 16:18
Цитата(Михалыч @  14.7.2013,  21:39 Найти цитируемый пост)
а надо понять, переустанавливали число, или оно поменялось  по истечению суток.
Для программы нет понятия "сутки", "часы", "годы". Дата - это обычное число, и программа не знает, при увеличении этого числа, что оказывается не просто секунда увеличилась, а уже и дата поменялась. Поэтому нужно, к примеру, проверять каждую минуту дату, если дата сменилась, проверить время, если это 12 ночи, то все нормально, если нет, то тревога. Но и тут может быть косяк, хотя маловероятный.

Автор: Михалыч 16.7.2013, 18:09
Цитата(MetalFan @  16.7.2013,  12:02 Найти цитируемый пост)
ну ничего не мешает проге сохранять (в памяти или на диске) текущее дату/время и в определенный промежуток (н-р раз в минуту) проверять текущее дату/время с сохраненными. Если разница более, чем минута (при проверке раз в минуту), то значит дату/время переводили... 


А если программу закрыли, дату перевели вперед , и программу запустили, то как быть?

Автор: kami 17.7.2013, 08:38
Цитата(Михалыч @  16.7.2013,  18:09 Найти цитируемый пост)
А если программу закрыли, дату перевели вперед , и программу запустили, то как быть?

Да никак. smile
А вот если потом переведут назад, тогда уже можно реагировать.

Автор: MetalFan 17.7.2013, 12:48
Цитата(Михалыч @  16.7.2013,  18:09 Найти цитируемый пост)
А если программу закрыли, дату перевели вперед , и программу запустили, то как быть? 


Цитата(MetalFan @  16.7.2013,  12:02 Найти цитируемый пост)
 сохранять (в памяти или на диске)


?

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