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





Пост N: 12
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.07.06 13:11. Заголовок: И всё-таки часы отстают...


имеем: Clipper 5.2e (DBFNTX) PM + Blinker 6.0 + CTP + FT_OnTick + DosIdle
на время критичных операций вызываю DosIDle(FALSE)
но все равно, через некоторое время отстают часы от системных...

хелп плиз...


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


администратор




Пост N: 313
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.06 13:45. Заголовок: Re:


Dosidle выкинь ;)
Юзай это http://www.the-oasis.net/files/general/multi102.zip
Говорю про allkey()
На время критичных операций можно юзать что то типа
ft_onidle({|| ft_iamidle()})

для NT и тд
ft_onidle({|| ft_iamidle(15,.t.)}) // 15 подбирал руками , вроде оптимально получилось.


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





Пост N: 13
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.07.06 14:53. Заголовок: вопрос


посмотрел, вроде неплохо задумано, не понял одной вещи:

этот самый ALLKEY мне просто нужно включить в мою программу в виде исходника, а MENU TO, INKEY(), GET будут сами к ней обращаться, т.е. она перекрывает имя стандартного вызова библиотеки Clipper ?



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




Пост N: 314
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.06 15:06. Заголовок: Re:


Из того исходника я использую только Allkey()
Просто включи его в сборку и все свои вызовы (почти) Inkey() замени на Allkey()

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





Пост N: 14
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.07.06 15:50. Заголовок: получилось


подключил, заменил
#command [<k>:=] INKEY(<x>) => [<k>:=] ALLKEY(<x>)
и сделал FT_ONIDLE({||FT_IAMIDLE()})
все вроде заработало, на часы пока не смотрел, но остался важный момент: DBEDIT...

и ещё возникают вопросы:
1) FT_IAMIDLE на сколько должен снижать загрузку ? Мне кажется, чегой-то не очень...
2) где посмотреть про его параметры ?

Спасибо!




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




Пост N: 315
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.06 16:17. Заголовок: Re:


Dima пишет:

 цитата:
для NT и тд
ft_onidle({|| ft_iamidle(15,.t.)})



У тебя какая операционка ?

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




Пост N: 316
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.06 16:23. Заголовок: Re:


Sergy пишет:

 цитата:
1) FT_IAMIDLE на сколько должен снижать загрузку ? Мне кажется, чегой-то не очень...
2) где посмотреть про его параметры ?


Посмотри NG к nanfor
http://www.blinkinc.com/dl/misc/nfkit.zip

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





Пост N: 15
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.07.06 17:02. Заголовок: вот


нашел описание здесь http://www.engwall.com/clipper/nfpat1a.htm
и почти во всем разобрался...
ALLKEY получается практически не нужен ?

в нашей сети много машин - от 200 до 3000 МГЦ, операционки Win98SE и WinXP - буду подбирать параметры FT_IamIdle()

от чего отталкиваться ?

Спасибо.

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




Пост N: 317
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.06 17:34. Заголовок: Re:


Sergy пишет:

 цитата:
в нашей сети много машин - от 200 до 3000 МГЦ, операционки Win98SE и WinXP - буду подбирать параметры FT_IamIdle()


я сделал так

if ol_ismswin()
ft_onidle({|| ft_iamidle()})
else
ft_onidle({|| ft_iamidle(15,.t.)})
endif


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





Пост N: 16
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.07.06 17:44. Заголовок: у меня так:


у меня так:

FT_OnIdle({||FT_IamIdle(15,IsWin2K())})
--------------------------------------------------
буду подбирать параметр 15 и проверять часы.

Спасибо за помощь!


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




Пост N: 318
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.06 17:47. Заголовок: Re:


Кстати я тоже подбирал и остановился именно на 15

Удачи !

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





Пост N: 22
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 08.08.06 12:53. Заголовок: Re:


после недельного тестирования замечено следующее:

1) часы не отстают (даже чуточку спешат... мне кажется...) но видимо это из-за того, что рабочая станция синхронизируется с контроллером домена (?)

2) при любом значении параметра nIntensity (от 0 до 30) наблюдается задержка с обновлением окна задачи до нажатия на любую клавишу, например:

сохраняем текущий экран, рисуем окошко, подготваливаем все GET поля, даем команду READ... в 10% случаев окно не появится до нажатия на любую клавишу (я обычно для "ускорения обновления" нажимаю Ctrl) причем в полноэкранном режиме такое налюдается при значениях nIntensity свыше 5.
---------------------------------------------------
вот... пока придумал пару ходов:

1) в очередной раз перелопатить все исходники и вызывать FT_IamIdle() только на время ожидания ввода с клавиатуры...MENU TO, INKEY(x), ACHOICE(), DBEDIT() и тп что тянет за собой кучу проблем: когда DBEDIT или ACHOICE вызывает call-back функцию и эта функция начинает интенсивную работу... значит на входе в эту функцию снова нужно вызывать OnIdle() без параметров... а таких функций - десятки... замкнутый круг (?)

2) увеличить скорость обновления экрана консоли. Под Win98 этот параметр устанавливался в system.ini в секции [386enh] : windowupdatetime=10 (по умолчанию=50). В WinXP этот фокус не работает...

Заранее спасибо!


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





Пост N: 11
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 09.08.06 19:43. Заголовок: Re:


Dima пишет:

 цитата:
Dosidle выкинь ;)

А как насчет TSlice?



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




Пост N: 332
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.06 20:10. Заголовок: Re:


alexmar пишет:

 цитата:
А как насчет TSlice?


знакомое название , где взять ?

ЗЫ
не SUV случайно делал ?

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





Пост N: 12
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 09.08.06 20:51. Заголовок: Re:


Dima пишет:

 цитата:
где взять ?


Ну дык, вроде здесь и лежит http://spravki.net.ru/files/utils/Tslice.arj
Да, автор SUV

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





Пост N: 23
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 10.08.06 14:02. Заголовок: Re:



 цитата:
Dima пишет:

цитата:
Dosidle выкинь ;)

А как насчет TSlice?




так с Tslice всё и началось - часы отставали... + не было средств контроля за включением/выключением модуля... DosIdle позволяет иногда "выключать" себя, если это необходимо параметром DosIdle(FALSE)


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




Пост N: 46
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 16.08.06 17:50. Заголовок: Re:


см след. сообщение

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




Пост N: 47
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 16.08.06 17:53. Заголовок: Re:


В моей tslice выгрузка сто лет уж как есть, просто сюда не заливалась - нах никому не нужна. Про отставание часов тож писал - там все хитро, но победить можно. А уж про то, что надо делать, чтобы не жать CTRL для ускорения программы - это я уже столько раз писал на форуме, что и повторять нет смысла

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





Пост N: 25
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 17.08.06 11:15. Заголовок: Re:


будь человеком - скинь сразу ссылки - у меня интернет медленный, а поиск по форуму криво работает...



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




Пост N: 334
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.08.06 11:27. Заголовок: Re:


suv2 пишет:

 цитата:
это я уже столько раз писал на форуме, что и повторять нет смысла


Напиши еще раз пожалуйста

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




Пост N: 53
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 17.08.06 15:57. Заголовок: Re:


Да там писанины на 4 тома "Войны и мира".

Конспективно - функция разгрузки замедляет выполнение программы. Разгрузка должна вызываться только в те моменты времени, когда программа ДЕЙСТВИТЕЛЬНО ожидает нажатия клавиши (т.е. ей нечего делать). Когда идет обработка баз - функция разгрузки НЕ ДОЛЖНА вызываться. Всякие левые (читай - сделанные не мной) библиотеки разгрузки устроены таким образом - они вешаются на функцию считывания клавиатуры и попутно делают разгрузку. Однако, клиппер устроен так, что он считывает клавиатуру ПОСТОЯННО, даже в те моменты, когда идет работа. Следовательно, разгрузка вызывается в те моменты, в которые вызываться не должна. В результате программа работает в десятки раз медленнее и для ее ускорения приходится жать Ctrl.

Моя версия разгрузки встроена непосредственно в переделанное мной ядро клиппер, и она вызывается только в те моменты, когда действительно программист В СВОЕМ КОДЕ (PRG) вызывает функцию считывания клавиатуры INKEY.

Но даже такая грамотная библиотека разгрузки может приводить к нежелательным последствиям. Например, программисты часто проверяют не нажат ли ESC, чтобы выйти из длительно работающего цикла. Следовательно, чем быстрее процессор и следовательно чем чаще вызывается INKEY() в цикле и следовательно чем чаще вызывается разгрузка - тем сильнее тормозит программа, которая пытается делать полезные действия в цикле.

Для преодоления этих трудностей надо применять специальные приемы программирования. 1) Например, отключать разгрузку на время работы цикла. 2) Или считывать клавиатуру не чаще, чем 1-2 раза в секунду. 3) Или не считывать клавиатуру вообще

Второй способ предполагает использование seconds(), который сильно тормозит систему. Использование вместо seconds() своей функции, считывающей время не через сервис DOS, а из области данных BIOS приводит к очевидному замедлению системных часов, т.к. виндовый эмулятор DOS выполняет обновление часов при определенных обращениях DOS-программы к сервису DOS/BIOS. Такое же замедление системных часов может быть (не всегда) и при способе 3)

Следовательно, наилучшим решением будет 2) с чтением времени своей функцией, написанной специальным образом

зы. На клиппер в наше время писать СОВСЕМ не просто.

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

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