|
|
|
| Вот информатичка поставила передо мной задачу: написать программу, которая бы имела меню, а управление меню осуществлялось бы с помощью клавиш F1-F12. Почти вся клавиатура дана в таблицах ASCII-кодов, но именно эти клавиши отсутствуют. Смотрел в книге "T.P. 7.0. На примерах" Шпака, в "Архитектура ЭВМ и вычислительных систем" Максимова, в других таблицах. Вообщем, нигде нет.
Дык как тогда мне тогда добраться до кнопки?
З.Ы.: информатичка сама не знает, как к ним обратиться, но просила меня разобраться с этим и реализовать программу именно через F1-F12. | |
|
|
|
|
|
|
|
для: TXC
(30.10.2006 в 19:20)
| | какими функциями Вы читаете коды клавиш? | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 20:11)
| | ReadKey, а затем сравниваю с ASCII (#xxxx, где xxx номер кода в ASCII).
З.Ы.: T.P. 7.0 | |
|
|
|
|
|
|
|
для: TXC
(30.10.2006 в 22:28)
| | Если мне память не изменяет, на нажатие спец-клавиш, эта функция будет возвращать последовательно два значения. Первое - ноль (признак расширенного кода), второе - номер клавиши.
Так что если функция возвращает не ноль - значит нажата обычная клавиша, а если ноль, надо вызвать функцию еще раз и её результат определит, какая именно спец-клавиша нажата. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 23:22)
| | Спасибо, натолкнул на идею =) как же я мог не сообразить, все так просто отследить:
while (Readkey <> #13) do
writeln(ord(Readkey));
readln;
|
Только вот незадача, F12 таким образом не выдает. Да и нажатием F1-F11 выводит ASCII-код мнгновенно на экран, а если это буквенная или числовая клавиша, то только после второго нажатия. Ну ничего, надеюсь, это решится, например при помощи KeyPressed.
Да и сравнение с #59 (что якобы отвечает за F1) ровным счетом ничего не дает. =(
Вот ведь, и на Шпака наговорил, а ведь после более тщательного изучения книги, нашел.
Но вопрос о том, как использовать клавиши остался, хоть и есть ASCII, т.к. они не срабатывают через KeyRead. | |
|
|
|
|
|
|
|
для: TXC
(31.10.2006 в 00:31)
| |
uses Crt;
var cd: Integer;
function ExtReadKey: Integer;
var code: Integer;
begin
code := ord(ReadKey);
if code = 0 then code := 1000+ord(ReadKey);
ExtReadKey := code;
end;
begin
WriteLn('Press a key, (ESC - exit)');
repeat
cd := ExtReadKey;
writeln('char ', chr(cd mod 1000), ' - code ', cd);
until cd = 27;
end.
|
| |
|
|
|