Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как обратиться к F1-F12 (Pascal)?
 
 автор: TXC   (30.10.2006 в 19:20)   письмо автору
 
 

Вот информатичка поставила передо мной задачу: написать программу, которая бы имела меню, а управление меню осуществлялось бы с помощью клавиш F1-F12. Почти вся клавиатура дана в таблицах ASCII-кодов, но именно эти клавиши отсутствуют. Смотрел в книге "T.P. 7.0. На примерах" Шпака, в "Архитектура ЭВМ и вычислительных систем" Максимова, в других таблицах. Вообщем, нигде нет.
Дык как тогда мне тогда добраться до кнопки?

З.Ы.: информатичка сама не знает, как к ним обратиться, но просила меня разобраться с этим и реализовать программу именно через F1-F12.

   
 
 автор: Trianon   (30.10.2006 в 20:11)   письмо автору
 
   для: TXC   (30.10.2006 в 19:20)
 

какими функциями Вы читаете коды клавиш?

   
 
 автор: TXC   (30.10.2006 в 22:28)   письмо автору
 
   для: Trianon   (30.10.2006 в 20:11)
 

ReadKey, а затем сравниваю с ASCII (#xxxx, где xxx номер кода в ASCII).

З.Ы.: T.P. 7.0

   
 
 автор: Trianon   (30.10.2006 в 23:22)   письмо автору
 
   для: TXC   (30.10.2006 в 22:28)
 

Если мне память не изменяет, на нажатие спец-клавиш, эта функция будет возвращать последовательно два значения. Первое - ноль (признак расширенного кода), второе - номер клавиши.
Так что если функция возвращает не ноль - значит нажата обычная клавиша, а если ноль, надо вызвать функцию еще раз и её результат определит, какая именно спец-клавиша нажата.

   
 
 автор: TXC   (31.10.2006 в 00:31)   письмо автору
 
   для: Trianon   (30.10.2006 в 23:22)
 

Спасибо, натолкнул на идею =) как же я мог не сообразить, все так просто отследить:


while (Readkey <> #13) do
  writeln(ord(Readkey));
readln;


Только вот незадача, F12 таким образом не выдает. Да и нажатием F1-F11 выводит ASCII-код мнгновенно на экран, а если это буквенная или числовая клавиша, то только после второго нажатия. Ну ничего, надеюсь, это решится, например при помощи KeyPressed.

Да и сравнение с #59 (что якобы отвечает за F1) ровным счетом ничего не дает. =(

Вот ведь, и на Шпака наговорил, а ведь после более тщательного изучения книги, нашел.

Но вопрос о том, как использовать клавиши остался, хоть и есть ASCII, т.к. они не срабатывают через KeyRead.

   
 
 автор: Trianon   (31.10.2006 в 09:49)   письмо автору
 
   для: 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.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования