[TP] Wczytanie klawisza w pętli bez jej zatrzymywania?

Witam,

chodzi mi mianowicie o fragment kodu, który pozwoli zapisać do zmiennej wciśnięty klawisz. Normalnie robię to tak:

char:=readkey;

Powyższa metoda jednak zatrzymuje mi pętlę repeat i czeka aż naciśnie się jakiś klawisz… i za chwilę znów chcę, aby mu wcisnąć… A ja chcę, aby za pomocą klawiszy strzałek zwiększać / zmniejszać wartość delay który nieco opóźnia pętlę… Kiedyś umiałem sobie z tym poradzić, lecz dziś…

Użyj funkcji KeyPressed, która zwraca true jak jest naciśnięty jakiś klawisz (i można go odczytać funkcją ReadKey):

if KeyPressed then

begin

char:=ReadKey;

coś tam robisz (zwiększasz/zmniejszasz delay)

end;

Niezbyt umiem sobie poradzić :frowning:

Nieco zmieniłem projekt - chcę, aby po kliknięciu na strzałkę, program cały czas wypisywał na ekranie gwiazdki dopóki nie zostanie zmieniony kierunek… Oto mój obecny kod:

U mnie działa taki kod:

program xx;


uses crt;


var klawisz: Char;

    x, y: Integer;


begin

  clrscr;

  x:= 10;

  y:= 10;

  klawisz:= #77;

  repeat

    while keypressed do klawisz:= readkey;

      case klawisz of

        #72: y:= y-1;

        #75: x:= x-1;

        #77: x:= x+1;

        #80: y:= y+1;

      end;

      gotoxy(x,y);

      write('*');

      delay(5000);

  until klawisz = #27;

end.