Автор | Сообщение |
|
| |
Пост N: 12
Зарегистрирован: 08.07.06
|
|
Отправлено: 31.07.06 13:11. Заголовок: И всё-таки часы отстают...
имеем: Clipper 5.2e (DBFNTX) PM + Blinker 6.0 + CTP + FT_OnTick + DosIdle на время критичных операций вызываю DosIDle(FALSE) но все равно, через некоторое время отстают часы от системных... хелп плиз...
|
|
|
Ответов - 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 подбирал руками , вроде оптимально получилось.
|
|
|
|
| |
Пост N: 13
Зарегистрирован: 08.07.06
|
|
Отправлено: 31.07.06 14:53. Заголовок: вопрос
посмотрел, вроде неплохо задумано, не понял одной вещи: этот самый ALLKEY мне просто нужно включить в мою программу в виде исходника, а MENU TO, INKEY(), GET будут сами к ней обращаться, т.е. она перекрывает имя стандартного вызова библиотеки Clipper ?
|
|
|
|
| |
Пост N: 314
Зарегистрирован: 17.05.05
|
|
Отправлено: 31.07.06 15:06. Заголовок: Re:
Из того исходника я использую только Allkey() Просто включи его в сборку и все свои вызовы (почти) Inkey() замени на Allkey()
|
|
|
|
| |
Пост 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) где посмотреть про его параметры ? Спасибо!
|
|
|
|
| |
Пост N: 315
Зарегистрирован: 17.05.05
|
|
Отправлено: 31.07.06 16:17. Заголовок: Re:
Dima пишет: цитата: | для NT и тд ft_onidle({|| ft_iamidle(15,.t.)}) |
| У тебя какая операционка ?
|
|
|
|
| |
Пост 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
|
|
|
|
| |
Пост N: 15
Зарегистрирован: 08.07.06
|
|
Отправлено: 31.07.06 17:02. Заголовок: вот
нашел описание здесь http://www.engwall.com/clipper/nfpat1a.htm и почти во всем разобрался... ALLKEY получается практически не нужен ? в нашей сети много машин - от 200 до 3000 МГЦ, операционки Win98SE и WinXP - буду подбирать параметры FT_IamIdle() от чего отталкиваться ? Спасибо.
|
|
|
|
| |
Пост 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
|
|
|
|
| |
Пост N: 16
Зарегистрирован: 08.07.06
|
|
Отправлено: 31.07.06 17:44. Заголовок: у меня так:
у меня так: FT_OnIdle({||FT_IamIdle(15,IsWin2K())}) -------------------------------------------------- буду подбирать параметр 15 и проверять часы. Спасибо за помощь!
|
|
|
|
| |
Пост N: 318
Зарегистрирован: 17.05.05
|
|
Отправлено: 31.07.06 17:47. Заголовок: Re:
Кстати я тоже подбирал и остановился именно на 15 Удачи !
|
|
|
|
| |
Пост 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 этот фокус не работает... Заранее спасибо!
|
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 25.07.06
|
|
Отправлено: 09.08.06 19:43. Заголовок: Re:
Dima пишет: А как насчет TSlice?
|
|
|
|
| |
Пост N: 332
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.08.06 20:10. Заголовок: Re:
alexmar пишет: знакомое название , где взять ? ЗЫ не SUV случайно делал ?
|
|
|
|
| |
Пост N: 12
Зарегистрирован: 25.07.06
|
|
Отправлено: 09.08.06 20:51. Заголовок: Re:
|
|
|
|
| |
Пост N: 23
Зарегистрирован: 08.07.06
|
|
Отправлено: 10.08.06 14:02. Заголовок: Re:
цитата: | Dima пишет: цитата: Dosidle выкинь ;) А как насчет TSlice? |
| так с Tslice всё и началось - часы отставали... + не было средств контроля за включением/выключением модуля... DosIdle позволяет иногда "выключать" себя, если это необходимо параметром DosIdle(FALSE)
|
|
|
|
| постоянный участник
|
Пост N: 46
Зарегистрирован: 24.09.05
|
|
Отправлено: 16.08.06 17:50. Заголовок: Re:
см след. сообщение
|
|
|
|
| постоянный участник
|
Пост N: 47
Зарегистрирован: 24.09.05
|
|
Отправлено: 16.08.06 17:53. Заголовок: Re:
В моей tslice выгрузка сто лет уж как есть, просто сюда не заливалась - нах никому не нужна. Про отставание часов тож писал - там все хитро, но победить можно. А уж про то, что надо делать, чтобы не жать CTRL для ускорения программы - это я уже столько раз писал на форуме, что и повторять нет смысла
|
|
|
|
| |
Пост N: 25
Зарегистрирован: 08.07.06
|
|
Отправлено: 17.08.06 11:15. Заголовок: Re:
будь человеком - скинь сразу ссылки - у меня интернет медленный, а поиск по форуму криво работает...
|
|
|
|
| |
Пост N: 334
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.08.06 11:27. Заголовок: Re:
suv2 пишет: цитата: | это я уже столько раз писал на форуме, что и повторять нет смысла |
| Напиши еще раз пожалуйста
|
|
|
|
| постоянный участник
|
Пост 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) с чтением времени своей функцией, написанной специальным образом зы. На клиппер в наше время писать СОВСЕМ не просто.
|
|
|
Ответов - 37
, стр:
1
2
All
[только новые]
|
|