Stránka 1 z 1

Pascal - menu v programu

Napsal: 10 zář 2014 19:42
od domkol
Zdravím,
potřeboval bych najít chybu ve zdrojáku. V programu jsem zatím vytvořil jen menu, kde si uživatel vybere nějakou položku. Když najede ukazatelem na určitou položku a stiskne enter, bude následovat určitá akce, ale to si dodělám později. Problém je v tom, že když už ten enter stiskne, nic se neděje. Už jsem to zkoumal celkem dlouho a opravdu si nevím rady.

Kód: Vybrat vše

program pujcovna;

uses crt;

var
  key : char;
  x, y : integer;

procedure nahoru;                                     (*pohyb šipek v menu*)
begin
y:=y-1;
if y<1 then y:=1;
gotoxy(x,y);
end;

procedure dolu;                                       (*pohyb šipek v menu*)
begin
y:=y+1;
if y<1 then y:=1;
gotoxy(x,y);
end;

begin
cursoroff;
key:=#1;
window(4,3,50,50);
x:=1;
y:=3;

repeat
gotoxy(1,1);
writeln('PROGRAM PUJCOVNA');
writeln;
writeln('   KONTAKTY');
writeln('   PUJCENI');
writeln('   PREVZETI');
writeln('   SKLADOVA EVIDENCE');
writeln('   KONEC PROGRAMU');
gotoxy(x,y);
write(#26);
gotoxy(x,y);     (*tady je něco v píči, fakt nevim co :@ *)
readkey;
if keypressed then key := readkey;
case key of
   #72: begin                                     (*pohyb šipek v menu*)
         x:=wherex;
         y:=wherey;
         write('   ');
         gotoxy(x,y);
         if y=3 then y:=8;
         nahoru;
         write(#26);                                   (*pohyb šipek v menu*)
         gotoxy(x,y);
         key:=#0;
         x:=wherex;
         y:=wherey;                                                      (*pohyb šipek v menu*)
        end;
   #80: begin
         x:=wherex;                                     (*pohyb šipek v menu*)
         y:=wherey;
         write('   ');
         gotoxy(x,y);
         if y=7 then y:=2;
         dolu;
         write(#26);                                (*pohyb šipek v menu*)
         gotoxy(x,y);
         key:=#0;
         x:=wherex;
         y:=wherey;                                      (*pohyb šipek v menu*)
        end;
     #27: key:=#1;
     #13: begin
           y:=wherey;
           case y of
            7: key:=#27;
            6: begin                    (*sklady*)
                clrscr;
                write('sklady!');
               end;
            5: begin                     (*převzetí*)
                clrscr;
                write('prevzeti');
               end;
            4: begin                      (*půjčení*)
                clrscr;
                write('pujceni');
               end;
            3: begin                    (*kontakty*)
                clrscr;
                writeln('KONTAKTY - PROHLIZENI');
                writeln('Pro vytvoreni noveho kontaktu stisknete N');
                writeln;
               end;
           end; (*end od case*)
           read;
        end;
   end; (*end od case pro pohyb šipek v menu*)





until key=#27;
end.

Re: Pascal - menu v programu

Napsal: 14 zář 2014 20:27
od domkol
opravdu nikdo neví?

Re: Pascal - menu v programu

Napsal: 14 zář 2014 23:29
od faraon
Ostatní položky fungují jak mají?

Co se děje po stisknutí Enteru? Dostaneš se do té větve?

A pokud ano, co je první znak který potom načteš?

Musíš zjistit ve kterém místě ten problém je, jak hluboko do té struktury se dostaneš, a jestli třeba někde nenačítáš o znak více nebo méně.

Re: Pascal - menu v programu

Napsal: 15 zář 2014 21:14
od domkol
tak jsem přišel na to, že špatně bylo asi označení pro enter (#13) když to nahradím #77 nebo-li šipkou doprava tak to funguje. nicméně rád bych onu možnost vybíral entrem. nevíš jaké značení je pro enter?

Re: Pascal - menu v programu

Napsal: 16 zář 2014 05:46
od faraon
Já bych také řekl #13, co kdyby sis zkusil napsat prográmek, který ti zobrazí kód stisknuté klávesy? ;-)

Re: Pascal - menu v programu

Napsal: 17 zář 2014 21:20
od domkol
takže, program na zobrazení stisknuté klávesy mi jaksi nefunguje, nicméně zkusil jsem to jiným způsobem. Napsal jsem program, který vypisuje text, dokud uživatel nazmáčkne #13. Reagoval pouze na enter, z čehož vyvozuji, že #13 = enter. Nechápu tedy proč mi to nejde v tom hlavním programu.