tech
Завсегдатай
  
Репутация: 6
Сообщений: 405
|
 |
: 06 Май 2010, 14:13
|
|
как выводить ascii код символа нажатой клавиши? на с и паскале интересует.
|
|
|
|
K i r i L L
Репутация: 166
Сообщений: 713
Мир изменится..
|
 |
Ответ #1 : 06 Май 2010, 16:18
|
|
ну например так: #include <conio.h> #include <stdio.h>
int main(){ int key = getch(); //считываем printf("%d",key); //выводим
getch();
return 0; }
|
キリル =)
|
|
|
tech
Завсегдатай
  
Репутация: 6
Сообщений: 405
|
 |
Ответ #2 : 06 Май 2010, 17:18
|
|
на с понятно. на паскале кто-нибудь подскажет?
|
|
|
|
imperfect
|
 |
Ответ #3 : 07 Май 2010, 01:08
|
|
ну например так: #include <conio.h> #include <stdio.h>
int main(){ int key = getch(); //считываем printf("%d",key); //выводим
getch();
return 0; }
Извиняюсь за занудство, но решение не очень красивое, ибо не нужно плодить сущности без необходимости  Заголовок conio.h нестандартен, поэтому будет работать не во всех компиляторах С. Вместо функции getch(), ради которой он и подключается, я бы использовал функцию стандартной библиотеки getchar(). Исполняемый файл будет меньше по объему, и программа будет более переносимая.  #include<stdio.h>
int main() { printf("%d", getchar()); getchar(); getchar(); return 0; } Различие между функциями есть: getchar() выводит осуществляет буферизованное считывание символа, т.е. выводит его на экран и требует нажатия Enter. Паскаль: program trololo;
var c: char;
begin readln(c); writeln(ord(c)); readln end.
|
|
|
|
tech
Завсегдатай
  
Репутация: 6
Сообщений: 405
|
 |
Ответ #4 : 07 Май 2010, 01:27
|
|
ord - это функция? чёто он просто символ выводит
|
|
|
|
imperfect
|
 |
Ответ #5 : 07 Май 2010, 02:45
|
|
Да, ord - функция, возвращающая ascii-код аргумента.
Усомнился, скачал FreePascal и проверил - все работает.
|
|
|
|
ExclusivE
Завсегдатай
  
Репутация: 9
Сообщений: 372
|
 |
Ответ #6 : 07 Май 2010, 04:09
|
|
program trololo; uses crt;
var c: char;
begin repeat repeat until keypressed; { жрать проц пока не нажата клавиша } c:=readkey; writeln(ord(c)); until c<>^[; { пока не нажат esc } end. На паскале я не кодил уже лет 8. Скорее всего где-то ошибки.
|
|
« Последнее редактирование: 08 Май 2010, 02:37 от ExclusivE »
|
|
|
|
|
imperfect
|
 |
Ответ #7 : 08 Май 2010, 03:41
|
|
2ExclusivE: Смотрю, проект развивается. Уже вторая версия вышла.
|
|
|
|
CRP
Житель форума
   
Репутация: 72
Сообщений: 1065
Googlusclan
|
 |
Ответ #8 : 08 Май 2010, 08:19
|
|
да это мегапроект метрополиса!!! Давайте все вместе писать, на всех возможных языках программирования под все возможные платформы. И в гугле распиарим )
|
  UNIX for stability, Palm for portability, Mac for productivity, and Windows for solitaire! ох, чую влепят мне RO.
|
|
|
tech
Завсегдатай
  
Репутация: 6
Сообщений: 405
|
 |
Ответ #9 : 18 Май 2010, 23:48
|
|
оказалось, что нужно использовать прерывания. эта программа через одно нажатие выводит символ, нужно чтоб вместо символа выводился его ascii код. тоже через раз.
program 1; uses Crt; var cha:char; bPrint:boolean; begin bPrint:=True; while True do begin while not keypressed do; asm mov ah,0h int 16h mov cha,ah end; if cha=' ' then break; if bPrint then Begin asm mov dl,cha mov ah,2h int 21h end; end; bPrint:= not bPrint; end; end.
|
|
|
|
imperfect
|
 |
Ответ #10 : 19 Май 2010, 01:40
|
|
Возможно, у нас разные паскали, но в Турбе нужно заменить mov cha,ah
на Вообще говоря, вывод ascii-кода через прерывание - нетривиальная задача, поскольку он может быть многосимвольным, например, '123'. Поскольку прерывание 21h осуществляет вывод содержимого младшего байта регистра d (всего 1 символ), нужно реализовать продвинутую логику анализа ascii-кода, и несколько раз подряд делать int 21h. Кстати, программа не может называться "1", в силу того, что идентификаторы не могут начинаться с цифры.
|
|
|
|
tech
Завсегдатай
  
Репутация: 6
Сообщений: 405
|
 |
Ответ #11 : 19 Май 2010, 01:50
|
|
Возможно, у нас разные паскали, но в Турбе нужно заменить mov cha,ah
на действительно, напутал) а на счёт тривиальности задачи - просто предмет, по которому это надо сделать, называется Интерфейсы Периферийных Устройств
|
|
|
|
imperfect
|
 |
Ответ #12 : 19 Май 2010, 01:58
|
|
Может, надо через прерывания только считывание, а вывод просто так?
|
|
|
|
tech
Завсегдатай
  
Репутация: 6
Сообщений: 405
|
 |
Ответ #13 : 19 Май 2010, 02:03
|
|
может и так прокатит) есть идеи?
|
|
|
|
|