|
Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Остановка (отставание) времени в DOS приложении при работе в WindowsXP |
|
Остановка (отставание) времени в DOS приложении при работе в WindowsXP
|
Новый участник Сообщения: 7 |
Здравствуйте Знатоки, столкнулись со следующей проблемой: при работе в фоновом режиме графические приложения dos отстают во времени на os win2k, winxp, ну и наверное в winnt (не проверял). Приложения dos которые работают в текстовой моде в фоне winxp - отставание премени замечено было только несколько раз.
Сделаем простой пример. Пишем простенькое графическое приложение на паскале, которое выводит на экран текущую дату, время. Компилируем, запускаем, смотрим - время идет нормально. Переключаемся в другую (другие) задачи windows, работаем, через время переключаемся обратно, видим что время отстало и тикает не секундами а немного быстрее, как будто пытается догнать текущее. К сожалению проблема стоит серьезно, т.к. имеется dos клиент наблюдения за тех. процессом, ограничения: 1. должен работать под ОС win2000,xp 2. пользователи переключаются между задачами, и при очередном переключении видят некоректные данные 8(. пробовали настраивать ntvdm, пользоваться dosbox - без полож.результата Если кто сталкивался с подобной ситуацией, либо владеет любой информацией по данному вопросу, просьба откликнуться. Заранее благодарен |
|
Отправлено: 12:58, 08-09-2005 |
![]() Модер Сообщения: 830
|
Профиль | Отправить PM | Цитировать msgipss
Вопрос конечно интересный, просто приведу свои воспоминания.. В том же самом Паскале (или что то же самое, Делфи) все зависит от того, при помощи какой функции реализовано, от чего естественно зависит точность хода времени приложения... |
------- Отправлено: 18:10, 08-09-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
SlS
Сообщения: n/a |
Я тоже кодю на паскале
![]() ![]() ![]() McDAK Дельфя это не паскаль ![]() ![]() ![]() ![]() |
Последний раз редактировалось SlS, 08-09-2005 в 20:36. Отправлено: 20:23, 08-09-2005 | #3 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать спасибо, но есть система, есть задача заставить ее работать под вин2к,хп. В свойствах ярлыка я делал различные установки - не помогает
сорри, возможно что то не понятно написал. Детализирую: используется ПО для контроля тех процесса, написано на foxpro2.6 из тектовой моды этой программы (на фоксе) запускаются исполняемые файлы писанные на клипере, паскале, они работают в графичейкой моде. Эти приложения отображают данные из БД .dbf в соответствии с системным временем. Проблема работы данного ПО обнаружилась на win2k,xp, если во время работы программы переключиться в др. задачу виндов. Проблему удалось локализовать. Если работает только в приложениях использующих текстовый режим, то переключения задач переносится нормально, время не отстает и соответствует действительному. Если же открыть программу которая работает в графической моде, поработать не закрывая ее переключиться в др.вин.задачу, поработать а потом опять в граф.задачу, то время начнет тикать с момента 1 переключения. И все данные показываюся некоректно. Более того при выходе из этого граф.приложения в техт. моду фокса - время все равно остается кривое и бежит быстрее. Со временем время догоняет текущее. Для решения проблемы был написан тестовый пример на пасе, на нем я и экспериментировал, пример ниже uses crt, graph, dos; var gm, gd:integer; result:integer; h2, m2, s2, ss2:word; s01:string; function IntToStr(I: Longint): String; { Convert any integer type to a string } var S: string[11]; begin Str(I, S); IntToStr := S; end; begin gd:=detect; initGraph(gd,gm,''); result:=GraphResult; if Result<>grok then begin TextBackground(0); ClrScr; Writeln('Ошибка инициализации графики',Result,' ',gD,' ',gM); Delay(2000); Halt; end; repeat getTime(h2,m2,s2,ss2); s01:=intToStr(h2)+':'+IntToStr(m2)+':'+IntToStr( s2)+'.'+IntToStr(ss2); SetFillStyle(0,0);Bar(0,0,100,100);SetColor(15); OutTextXY(10,10,s01); until keyPressed; closeGraph; textMode(CO80); end. этот пример просто гоняет время в граф.моде, при переключении в другие задачи время останавливается 8( Буду благодарен за любые мысли по данной проблеме |
Отправлено: 13:20, 09-09-2005 | #4 |
![]() Модер Сообщения: 830
|
Профиль | Отправить PM | Цитировать msgipss
Гм... По-моему все это только подтверждает мои подозрения... Не удивлюсь, если эта тестовая прога начнет врать со временем, даже если просто очень хорошо нагрузить проц. А все от того, что не надо получать время функцией getTime... Возьми хороший учебник по Паскалю и поищи другие способы получения системного времени, я просто сейчас уже не помню... SIS Я знаю что такое ObjectPascal ![]() |
|
------- Отправлено: 15:59, 09-09-2005 | #5 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Наверное я не умею объяснять, 8))
я же говорил выше, что при запуске любого !!! граф.DOS приложения (пробовал писать на клипере, пасе7.0 фоксе, запускал граф. дос игрушки ), и переключении в другую вин. задачу, в ntvdm происходит задержка времени, и после переключения опять в задачу ntvdm начинает догонять время реальное 8)) проблема не в паскале не ооп - а в настроке нтвдм, если она вообще возможна 8(( |
Отправлено: 09:11, 12-09-2005 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Обработка полей ввода при установке приложении | semiono | AutoIt | 4 | 28-01-2009 15:08 | |
NTVDM ebcounrered a hard error (на 16-ти разрядном DOS-приложении) | Dors | Программное обеспечение Windows | 1 | 27-04-2007 11:25 | |
Сокращение времени установки WindowsXP | EgOrus | Автоматическая установка Windows 2000/XP/2003 | 7 | 18-03-2006 21:47 | |
Как сохранить текст в DOS приложении в XP? | Fortune | Хочу все знать | 2 | 06-04-2005 09:52 | |
Работа приложений DOS под WindowsXP | Colonel | Microsoft Windows 2000/XP | 8 | 05-12-2003 17:57 |
|