Автор | Сообщение |
|
| |
Пост N: 4326
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.12.14 16:59. Заголовок: Пара простых вопросов ;)
1. Как узнать что путь к папке из которой запускается программа имеет символы кирилицы ? На ум приходит такой способ proc main() local a REQUEST HB_LANG_RU866 HB_LANGSELECT("RU866") REQUEST HB_CODEPAGE_RU866 hb_cdpSelect( "RU866" ) a:=curdir() ? a if hb_oemtoansi(a)#a ? "Есть кирилица" endif wait RETURN NIL Есть еще метода ? 2. Как узнать что путь к папке из которой запускается программа имеет длинные имена ? На вскидку приходит вариант разбить на токены с разделителем "\" и затем чекать длины всех токенов. Есть еще метода ?
|
|
|
Ответов - 85
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
| |
Пост N: 4733
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.04.15 22:34. Заголовок: В программе стоит та..
В программе стоит такой вызов FT_OnTick({|| TEST()},500) // срабатывание TEST каждые 30 секунд Функция TEST опрашивает некую базу и в случае обнаружения в одном из полей значения .T. вываливает на экран какое то сообщение. Пока сообщение висит прога кушает примерно 25 % ресурсов проца. Можно эту проблему победить что бы не "жрало" столько ресурсов ? Пробовал перед выводом сообщения вешать FT_OnTick() а после закрытия сообщения FT_OnTick({|| TEST()},500) , не помогло. PS FT_OnTick это из HBNF и реализован c помощью Hb_idleadd , Hb_idleDel PS1 В Clipper такой же аналог не приводил к загрузке проца.
|
|
|
|
| постоянный участник
|
Пост N: 578
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 07:42. Заголовок: Dima если использов..
Dima если использовать не idle, а on timer и сообщение вешать в потоке ?
|
|
|
|
| |
Пост N: 4734
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 08:27. Заголовок: SergKis С потоком н..
SergKis С потоком нельзя. Работаю с ADS. Лет 5 назад проводил тесты , падает прога в разных потоках при работе с ADS , при чем непредсказуемо. В принципе есть исходник OnTick.c из Nanfor for Clipper https://searchcode.com/codesearch/view/4467408/ Может его можно как то под Harbour переписать ?
|
|
|
|
| постоянный участник
|
Пост N: 580
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 08:31. Заголовок: Dima пишет:С потоком..
Dima пишет: тогда используй отдельный запуск - монитор опроса (можно использовать приоритет задания) и сообщением в tray
|
|
|
|
| |
Пост N: 4735
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 09:00. Заголовок: SergKis Кажется пон..
SergKis Кажется понял почему такая загрузка. Дело в INKEY. Попробовал твою функцию INKEYGUI и кажется загрузки нет. Счас потестю.
|
|
|
|
| постоянный участник
|
Пост N: 581
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 09:35. Заголовок: Dima пишет: Дело в I..
Dima пишет: ну да, inkey "морозит" обработку сообщений, InkeyGui - обрабатывае очередь и выделяет нажатия клавишь, но в wvt использовать, даже не подумал
|
|
|
|
| |
Пост N: 4736
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 10:05. Заголовок: SergKis В общем да ..
SergKis В общем да нормально , не тормозит ни чего но вылезла новая проблема. В функции TEST что выше писал которая сидит в IDLE вызывается MEMOEDIT на просмотр (без редактирования) memoedit(prime,11,21,18,59,.f.,"k2mmem_ff_prm",38) ......... ......... Функция обработки педалей Если в ней юзать INKEY , текст сообщения я вижу сразу , но грузит проц. Если вместо нее юзать INKEYGUI(100) , проц не грузит но не вижу сообщения , пока какую то кнопку не нажму. func k2mmem_ff_prm() local nxkey:=0 local local_time:=seconds() do while (nxkey:=INKEY(0.01))==0 if seconds()-local_time>10 TestKillUser() local_time:=seconds() endif enddo if nxkey==27 ft_putkey(nxkey) endif return 0 До кучи. Вставил в свой бровс вместо nkey:=inkey(0.01) -> nkey:=inkeygui(100) и функция пользователя больше не реагирует на функциональные клавиши. Enter обрабатывается.
|
|
|
|
| постоянный участник
|
Пост N: 582
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 10:32. Заголовок: Dima сравни коды nk..
Dima сравни коды nkey после инкеев в gui VK_..., если правильно помню ...
|
|
|
|
| постоянный участник
|
Пост N: 583
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 10:35. Заголовок: PS ? 'test'..
PS ? 'test' inkeygui(3000) видно или как ?
|
|
|
|
| |
Пост N: 4737
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 10:47. Заголовок: Да ESC , ENTER , Про..
Да ESC , ENTER , Пробел совпадают , функциональные нет , насчет буквенно цифровых не проверял.
|
|
|
|
| |
Пост N: 4738
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 10:51. Заголовок: SergKis пишет: ? ..
SergKis пишет: цитата: | ? 'test' inkeygui(3000) видно или как ? |
| Видно
|
|
|
|
|
| |
Пост N: 4739
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 10:59. Заголовок: Кажется понял чего н..
Кажется понял чего надо. Нужен переходник из кодов INKEYGUI в обычные не расширенные коды INKEY. При чем с учетом раскладки клавы. Вопрос как это без напряга сделать !
|
|
|
|
| постоянный участник
|
Пост N: 585
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 11:06. Заголовок: Dima пишетНужен пере..
Dima пишет цитата: | Нужен переходник из кодов INKEYGUI |
| где то видел, но непомню и заменяя inkey, inkeygui - аналог inkey clipper 5.2e и еще мышь не отрабатывает
|
|
|
|
| |
Пост N: 4740
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 11:11. Заголовок: Странно что в самом ..
Странно что в самом Harbour нет аналога типа INKEYIDLE , потому как если опрашивать клаву в IDLE фоновой задачи ( НЕ в потоке ), c помощью INKEY то грузит проц. Если в основном потоке идет опрос с помощью INKEY , проц не грузит.
|
|
|
|
| постоянный участник
|
Пост N: 1056
Зарегистрирован: 27.01.07
|
|
Отправлено: 16.04.15 11:26. Заголовок: Использовать в цикле..
Использовать в цикле hb_ReleaseCPU() не подойдет?
|
|
|
|
| |
Пост N: 4741
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 11:33. Заголовок: PSP пишет: Использо..
|
|
|
|
| постоянный участник
|
Пост N: 587
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 12:51. Заголовок: Dima мой товарищь п..
Dima мой товарищь посоветовал делать так: nKey := InkeyGui( ... ) nKey подать в hb_gt_wvt_Info(...) gtwwt.c добавить свою константу в case static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) например case HB_GTI_VK_TO_INKEY используя hb_gt_wvt_KeyEvent(...) в которой hb_gt_wvt_TranslateKey(...) произвести перекодировку но надо пересобрать gtwwt.obj
|
|
|
|
| |
Пост N: 4742
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.04.15 13:10. Заголовок: SergKis Спасибо ! Д..
SergKis Спасибо ! Думал есть способ проще , без переделки сырцов. Попробую.
|
|
|
|
| постоянный участник
|
Пост N: 589
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.04.15 14:48. Заголовок: Dima пишет:Думал ест..
Dima пишет: цитата: | Думал есть способ проще , без переделки сырцов |
| вытащить из gtwvt.c эти функции (они static), сделать не static, переименовать ... повторить все - вряд ли это проще
|
|
|
|
| |
Пост N: 4744
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.04.15 13:22. Заголовок: В сишный код я точно..
В сишный код я точно не полезу , так как должен понимать что делаю.
|
|
|
Ответов - 85
, стр:
1
2
3
4
5
All
[только новые]
|
|