On-line: tnsr2, гостей 0. Всего: 1 [подробнее..]
АвторСообщение





Пост N: 82
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 22.09.10 22:58. Заголовок: 5.2e - синхронизация внутренних часов Clipper с компом


Недавно выяснил, что Clipper при запуске программы инициализирует свои внутренние часы.
Сначала время не отличается от системного, но потом понемногу начинает отставать - примерно на 1 минуту за 2 часа.

Т.е. функции TIME() или SECONDS() сначала равны системному времени, после часа работы программы - уже нет.

Проблема небольшая, но мешает, особенно в свете системы обмена сообщениями между филиалами. Как ее решить ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 7 [только новые]


постоянный участник


Пост N: 366
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.09.10 20:45. Заголовок: Я сейчас по памяти н..


Я сейчас по памяти не помню, но скорей всего функция TIME использует известное досовское прерывание, которое возвращает время. Так что отставание по времени с Clipper никак не связано. Что DOS возвращает, то Clipper и показывает. А seconds() оперирует с ячейкой памяти, где "тики" от начала суток хранятся. Естественно, что эти данные берутся с локального компьютера.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1881
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.09.10 21:05. Заголовок: Sergy Может чем то ..

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1882
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.09.10 21:16. Заголовок: Еще в тему http://cl..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 367
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.09.10 16:17. Заголовок: Кстати сказать, я не..


Кстати сказать, я не совсем точно привел данные по функциям TIME() и SECONDS() в своем предыдущем сообщении, так как писал по пеамяти
На самом деле обе эти функции используют внутреннию функцию Clipper __ostime, которая является оберткой для службы DOS 02Сh прерывания DOS 021h. Это функция просто выполняет эту службу и полученные данные записывает в структуры в виде машинных слов для значений часов, минут, секунд и сотых долей секунд.
Функция TIME() затем эти данные переводит в текстовую строку. В то время, как функция SECONDS() переводит эти данные в одно число, которое и возвращает. То есть всегда данные в этих функциях берутся из прерывания 021h с функцией 02Ch.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 368
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.09.10 19:26. Заголовок: Правда все, что я вы..


Правда все, что я выше написал, относится к Clipper 5.01 и 5.2. Про 5.3 гарантировать не могу, так как нет исходного кода.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 85
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 02.10.10 19:37. Заголовок: Да, моя тема... силь..


Да, моя тема...
сильное отставание победил ещё тогда.
сейчас идет совсем незначительное.

Исходники TIME() и SECONDS() не смотрел, но если они точно берут время из ДОС-подсистемы, тогда вопрос - почему отстают часы ДОС-машины и как с этим бороться ?



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 369
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.10.10 15:42. Заголовок: То, что в Clipper 5...


То, что в Clipper 5.01 и 5.2 функции TIME() и SECONDS() берут время из прерывания 02Ch системы DOS, то это вне всякого сомнения. Они просто вызывают внутреннюю функцию __ostime(), а затем просто преобразуют полученные данные либо в строку, как имеет место в TIME(), либо в обно число, как имеет место в SECONDS(). Я думаю, что вы можете получить список перекрестных имен в Clipper 5.3 и посмотреть, есть ли среди них функция __ostime(). Дело в том, что Clipper 5.01 и Clipper 5.2 основывают на компиляторе Microsoft C и используют его библиотеки. А в Clipper 5.3 используется то ли более поздний компилятор Microsoft, в котором многие базовые функции переписаны, либо по крайней мере имеют другие названия, либо в Clipper 5.3 уже не используются библиотеки Microsoft, а базовые функции переписаны разработчиками Clipper.
Как я уже заметил, про Clipper 5.03 ничего сказать не могу, так как у меня нет его дистрибутива.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 281
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет