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



Пост N: 1
Зарегистрирован: 10.06.12
ссылка на сообщение  Отправлено: 10.06.12 14:11. Заголовок: Как переопределить поведение при нажатии Alt-C ?


Всем привет.

Есть сильная потребность в следующем: при нажатии юзером (или мною) Alt-C прога должна:
1) выводить не только имя той функции, где это случилось, а вообще весь стек
2) сохранять в лог дату_время + стек

Как это сделать ?

Пробовал set key 302 to my_cancel_handler - не работает :(

PS. OFF. А когда это сделали требование, чтобы логин содержал непременно две буквы ? Верните взад старое! :-)

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


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




Пост N: 2404
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.06.12 15:30. Заголовок: pp519446 пишет: Про..


pp519446 пишет:

 цитата:
Пробовал set key 302 to my_cancel_handler - не работает


Все работает.
 
Setcancel(.f.)
set key 302 to test
wait
********
Func test()
cls
? "Test "+time()
return




pp519446 пишет:

 цитата:
Верните взад старое! :-)


Пиши сюда http://a.borda.ru/

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



Пост N: 2
Зарегистрирован: 10.06.12
ссылка на сообщение  Отправлено: 10.06.12 21:08. Заголовок: > Все работает. ..


> Все работает.
Как-то не очень сильно бросилось в глаза... ;-)
Вот, запусти и попробуй замочить по Альт-Це. Получится ?

cls
Setcancel(.f.)
set key 302 to test
i=1
@ 5,0 say 'i`ve started! try to cancel me if you can. . . :-)'
whil .t.
if mod(i,1000)=0
@ 6,0 say i
endi
i=i+1
endd
wait
********
Func test()
cls
?'catch cancellation in '+PROCNAME()+' at '+time()+' '+PROCNAME(1)+':'+LTRI(STR( PROCLINE(1) ))
quit
return

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




Пост N: 2405
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.06.12 21:30. Заголовок: pp519446 пишет: Вот..


pp519446 пишет:

 цитата:
Вот, запусти и попробуй замочить по Альт-Це. Получится ?


При таком подходе и любая другая комбинация не сработает.

 
SET KEY является командой работы с клавиатурой, которая разрешает
выполнение процедуры из любого состояния ожидания после нажатия
обозначенной клавиши. Состояние ожидания - это любой режим ожидания
ввода с клавиатуры, за исключением функции INKEY(). Эти режимы
включают ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ и
WAIT. После того, как клавиша переназначена, в результате нажатия
на нее выполняется заданная процедура, при этом в нее автоматически
передаются три параметра, соответствующих значениям функций:
PROCNAME(), PROCLINE() и READVAR(). Первый и третий параметр имеют
тип - CHARACTER, а второй - NUMERIC.



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


Пост N: 776
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 11.06.12 09:41. Заголовок: Для Inkey() можно ис..


Для Inkey() можно использовать такой заменитель (обрабатывает установку Setkey() ):
 
#include "common.ch"

/***
* InkeyEval( [nSecs] ) --> nInkeyCode
* Заменяет InKey() с обработкой SetKey()
* nSecs - аналогично функции Inkey()
*/
FUNCTION InkeyEval( nSecs )

LOCAL nKey
LOCAL nStart := Seconds()
LOCAL bKeyBlock

WHILE .T.

nKey := Inkey()

IF ISNIL( nSecs )
EXIT
END // IF

IF ( bKeyBlock := SetKey( nKey ) ) <> NIL
Eval( bKeyBlock, PROCNAME( 2 ), PROCLINE( 2 ) )
nStart := Seconds()
LOOP
END // IF

IF ( nSecs <> 0 .and. ( Seconds() - nStart > nSecs ) ) .or. ;
( nSecs == 0 .and. nKey <> 0 )
EXIT
END // IF

END // WHILE

RETURN nKey


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

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