Thomas L. Christensen <tlc@fabel.dk> wrote:
> Jeg har et C program med en menu. Det er noget kode jeg har skrevet af
> fra en bog engang, så det burde virke - men der er altså et eller
> andet galt. Selve koden, der laver menuen, ser sådan her ud:
>
> [...]
>
> Det ser jo meget fornuftigt ud (?) - men det virker ikke! Jeg har
> leget lidt med det, og fundet frem til, at getch() returnerer
> forskellige værdier, alt efter om man trykker 'x' eller 'Alt-x'.
>
> #include <stdio.h>
>
> int main()
> {
> char ch_1=0, ch_2=0;
>
> ch_1 = getch();
> if (ch_1 == 0)
> {
> ch_2 = getch();
> printf("ch_2 = %d", ch_2);
> }
> else
> {
> printf("ch_1 = %d", ch_1);
> }
>
> return 0;
> }
>
> Burde Alt-x ikke resultere i at ch_2 kom til at indeholde 120, ligesom
> ch_1 gør, hvis man blot taster x?
Nej. Når getch() returnerer 0, betyder det at tasten ikke har en
ASCII-kode, og at det næste getch()-kald returnerer tastens scankode. Se
f.eks.
http://www.jimprice.com/jim-asc.htm nede under "IBM PC Keyboard Scan
Codes". Ved Alt-X returnerer getch() først 0 og dernæst 45.
Karl Olsen
http://karl.rudbaek-olsen.dk