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





Пост 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: 54
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 17.08.06 16:13. Заголовок: Re:


Есть еще 4-е решение. Вместо inkey() использовать MyInkey(), в которой (И ТОЛЬКО В НЕЙ) вручную делать разгрузочные вызовы (т.е. вызывать функцию, которая делает один разгрузочный вызов. Или включать разгрузку, а по выходу из MyInkey - выключать разгрузку, если соответствующая библиотека позволяет это делать). Для проверки выходов из цикла - использовать inkey(), при этом разгрузочных вызовов делаться не должно. При этом все стандартные интерфейсные функции (если они используются) должны быть ПЕРЕПИСАНЫ заново (переделка inkey на MyInkey). Это get-система, wait, menu to, browse, dbedit. Часть функций - есть в исходниках на PRG в комплекте поставки, а такие вещи как achoice - надо переписывать самому.

Т.е. простых путей нет и для того, чтобы клиппер-программа работала быстро и при этом не тормозила систему в целом, когда не программа не работает - надо потрудиться. Кто ленится - у того тормозит либо система, либо ему надо жать CTRL, чтобы программа работала быстро))) либо часы системные серьезно отстают )

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




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


suv2
СПАСИБО ЮРА !!!!


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





Пост N: 26
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 17.08.06 17:28. Заголовок: Спасибо, мусчино!


у меня были похожие мысли:


 цитата:

вот... пока придумал пару ходов:

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



буду думать в этом направлении. Спасибо!

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




Пост N: 55
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 21.08.06 14:00. Заголовок: Re:


suv2 пишет:

 цитата:
Есть еще 4-е решение. Вместо inkey() использовать MyInkey(), в которой (И ТОЛЬКО В НЕЙ) вручную делать разгрузочные вызовы



при этом надо помнить, что если в цикле тогда для проверки на выход надо использовать простую inkey(), чтобы работа цикла не тормозилась

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





Пост N: 27
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 07.09.06 10:33. Заголовок: вопросы к suv2 по поводу tslice


suv2 пишет:

 цитата:
В моей tslice выгрузка сто лет уж как есть, просто сюда не заливалась - нах никому не нужна.


а каким образом она выключается?
suv2 пишет:

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

Так получается, что TSInstall() можно использовать с переделанным ядром клиппера?

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





Пост N: 28
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 07.09.06 18:34. Заголовок: для Sergy


Sergy пишет:

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

Кажется здесь это обусуждалось

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




Пост N: 67
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 08.09.06 14:08. Заголовок: Re:


alexmar пишет:

 цитата:
а каким образом она выключается?



tssupport (.T.|.F.) - вроде так

alexmar пишет:

 цитата:
Так получается, что TSInstall() можно использовать с переделанным ядром клиппера?



Раньше было - с любым. Библа была навесная и работала по типу вируса. Она искала в памяти определенный код, стирала часть кода, писала код передачи управления на себя, потом делала свои черные дела, выполняла сама затертую ранее часть кода и отдавала дальше управдение клипперу. Потом я посмотрел, как делает разгрузку Стекленев - оказалось, что есть некий апи и можно вызывать свою функцию разгрузки более дешевым способом. Но когда я попробовал так и сяк, мне не понравился ни мой способ, ни способ Стекленева. Если не изменяет память - что мой код, что его - вызывается постоянно. Например даже тогда, когда пользователь непрерывно стучит по клавиатуре. В этом случае вызывать разгрузку абсурдно - я например могу вводить строку, а программа выбирает из базы подходящие строки, зачем замедлять этот процесс? Кроме этого, если мне не изменяет память, была и более серьезная причина. Клиппер опрашивает клавиатуру в фотовом режиме и функция разгрузки (в моей библиотеке и в его) вызывается все равно даже тогда, когда я не вызываю inkey, а работаю с базами.

И пришлось пойти в ядро, расковырять его и сделать вызов разгрузки только тогда, когда клиппер пытается ДЕЙСТВИТЕЛЬНО (с помощью ЯВНОГО ВЫЗОВА INKEY) считать клавиатуру + а пользователь ничего в данный момент не жмет (т.е. инкей ожидает ввода)

Эту задачу на момент ее рещения мне было проще сделать не навесным способом, а встроить непосрелдственно в ядро, поскольку я на тот момент обладал большинством декомпилированных исходников ядра клиппер-машины. И чем писать внедряющийся код, я просто вставил разгрузку в ядро.

Поэтому эта библиотека доступна только вместе с ядром) Могу залить в принципе. Из того, что мне там нравится - макрооператор проглатывает строки до 2048 символов ) ну и так всякие исправления, фиксы багов всякие, с отладчиком всякие приколы)

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





Пост N: 29
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 08.09.06 18:01. Заголовок: Re:


suv2 пишет:

 цитата:
Поэтому эта библиотека доступна только вместе с ядром) Могу залить в принципе

Пока, пожулуй, не нужно. Сейчас пробую встраивать разгрузку, как Sergy, через FT_OnIdle({||FT_IamIdle())}) в модернизированную MyInKey() с учетом того, о чем говорилось здесь выше. Если все будет нормально, то остановлюсь на этом варианте.

ЗЫ Обнаружил, правда, что FT_IamIdle() конфликтует с отладчиком. Вываливается по GPF после того, как в отладчике 10- 15 раз нажмешь клавиши управления. Приходится отключать разгрузку при работе од отладчиком. Sergy, ты работал с FT_IamIdle(). У тебя такого не было?

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





Пост N: 36
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 09.09.06 13:33. Заголовок: Re:


с отладчиком не работал ВАЩЕ, поэтому тут ничем не смогу помочь...
--------------------------------------
сейчас остановился на FT_IamIdle() - пока полет нормальный.

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




Пост N: 71
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 14.09.06 10:48. Заголовок: Re:


alexmar пишет:

 цитата:
ЗЫ Обнаружил, правда, что FT_IamIdle() конфликтует с отладчиком



Отладчик конфликтует сам с собой. Для того, чтобы нахрен слететь, ему не нужно никаких фт_онидле. )) Вполне себе самодостаточная вещь )))

Но вообще не удивлен)) Есть только ОДНА правильная разгрузка - разгрузка в моём ядре. Все остальное - кривота. Пользуйтесь правильным софтом)

Кстати, кто пользуется АДС - тому и этой разгрузки недостаточно, он должен пользоваться особыми навесными функциями разгрузки для АДС ) Требуйте пропатченую мной версию в аптеках города

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




Пост N: 73
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 14.09.06 11:01. Заголовок: Re:


Sergy пишет:

 цитата:
с отладчиком не работал ВАЩЕ



Напрасно, батенька. Уж на что я сам пишу без ошибок ))) Но и то пользуюсь, чтобы в этом убедиться

Sergy пишет:

 цитата:
сейчас остановился на FT_IamIdle() - пока полет нормальный



Там трудностей много, как я писал. Неужто уже все победил?

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





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



 цитата:

цитата:
сейчас остановился на FT_IamIdle() - пока полет нормальный

Там трудностей много, как я писал. Неужто уже все победил?




да я ведь и ответил... замирания происходят иногда... помогает "нажатие Ctrl"

Пока решил поступить таким образом:

Написал функцию SetSysPower(nPercentage), которую вызываю перед началом критичного цикла так:
x := SetSysPower(100) // мне нужно 100 процентов мощности, + возвращаем установленное значение для сохранения
// здесь в цикле делаю что-то...
SetSysPower(x) // восстанавливаю первоначальное значение.

-----------------------------
в функции SetSysPower() - если требуемое значение мощности более 50 (процентов) - выключаю все FT_IamIdle() - программа работает реально быстро, безо всяких Ctrl
Если требуемое значение ниже 50 - восстанавливаю разгрузку системы.
----------------------------
При запуске программы делаю SetSysPower(10) - по умолчанию разгрузка включается. Исходников много, поэтому добавляю по мере реальной необходимости. Потом, если ВДРУГ решу перейти на твой вариант, когда разгрузка по умолчанию ВЫКЛЮЧЕНА, добавленные фрагменты кода просто не будут мешать: т.е. возвращаемое значение для x и так будет равно 100.
----------------------------

Слушай, вот ты всё время говоришь про какое-то переделанное ядро Клиппер: у меня 5.2e + DBFNTX - мне оно можеот пригодиться? Если да - будь человеком, скинь куда-нибудь - давай посмотрим, чего из этого можно реально в жизни применить... Просто так получается, что клипперистов в России осталось человек 20 (судя по нашему форуму) - какой смысл делать из этого суперсекретный проект?







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




Пост N: 77
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 14.09.06 14:01. Заголовок: Re:


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

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





Пост N: 44
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 14.09.06 18:29. Заголовок: Re:


suv2 пишет:

 цитата:
Там трудностей много, как я писал. Неужто уже все победил?

У меня переделка заняла где-то пол-дня. По умолчанию разгрузка выключена. Включаю только при вызове Inkey с параметром 0 или больше 0. Вместо штатных MENU TO, DBEDIT() и ACHOICE() использую свои, которые переделал с поддержкой разгрузки. Вроде все работает и тормозов особых нигде не наблюдаю.

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





Пост N: 45
Зарегистрирован: 25.07.06
ссылка на сообщение  Отправлено: 14.09.06 18:34. Заголовок: Re:


Sergy пишет:

 цитата:
... так получается, что клипперистов в России осталось человек 20 (судя по нашему форуму)


off
Увы, печальный факт. И как хорошо, что этот форум еще жив. Наверно это последний заповедник клипперистов бывшего союза...

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





Пост N: 37
Зарегистрирован: 06.06.06
ссылка на сообщение  Отправлено: 14.09.06 19:10. Заголовок: Re:


alexmar пишет:

 цитата:
Наверно это последний заповедник клипперистов бывшего союза...


Может, сделаем перепись оставшегося населения?

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




Пост N: 87
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 15.09.06 12:56. Заголовок: Re:


alexmar пишет:

 цитата:
У меня переделка заняла где-то пол-дня. По умолчанию разгрузка выключена. Включаю только при вызове Inkey с параметром 0 или больше 0. Вместо штатных MENU TO, DBEDIT() и ACHOICE() использую свои, которые переделал с поддержкой разгрузки. Вроде все работает и тормозов особых нигде не наблюдаю



а вот и неправильно) включай разгрузку только в том случае, если инкей за целую секунду не получил никакой кнопки и продолжает ждать)))

В этом случае ты можешь более дешево проверять ESC при работе цикла))) Один раз считали, ESC не обнаружен, продолжили шуровать базы, разгрузку не вызывали, скорость работы не теряем)))

думать надо, думать)))

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

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