Programowanie w języku Pascal » FAQ

Jak zrobić przetwarzanie znaków znak-gt;kod

Często zdarza się że piszemy program z użyciem klawiszy strzałek, Fn itp. i nie wiemy jakie są kody klawiszy.
uses crt;
var k:char; p:byte;
begin
 Writeln('x - wyjscie; c - czyszczenie ekranu');
 Writeln('Postac wyswietlania: znak   kod_znaku   kod_klawisza');
 repeat
  k := ReadKey;
  p := Port[$60];
  if k='c' then ClrScr;
  Writeln;
  GotoXY(2, WhereY); Write(k); {Znak}
  GotoXY(7, WhereY); Write(ord(k)); {Kod znaku}
  GotoXY(15, WhereY); Write(p); {Kod klawisza}
 until k='x';
end.

Powyższy program służy do wydobywania kodów z klawiszy. Pierwsza wyświetlana wartość to znak. Jak wpiszesz 'S' to tam sie pojawi 'S'. Jak naciśniesz Esc to pojawi się strzałeczka. Druga wyświetlana wartość to kod ASCII. Dla litery 'A' jest to 65 dla 'B' - 66, dla Esc jest to 27 itd. Trzecia wartość to wartość na porcie 60h - porcie klawiatury.
Aby się odwołać do znaku, wpisujemy
if ReadKey='S' then ...
, aby się odwołać do kodu ASCII, wpisujemy
if ReadKey=#27 then ...
albo
if ord(ReadKey)=27 then ...
, aby się odwołać do wartości portu, wpisujemy
if Port[$60]=20 then ...


Ten programik możemy sobie zastosować jako narzędzie. Jak to zrobić, pisałem we wskazówce na http://4programmers.net/faq.php?id=829 .