Wczytywanie znaków z klawiatury do czasu wpisania Esc

0

Kolejny problem z serii pt. pętla.☺️

Ta pętla ma wykonywać się nieustannie (wiele powtórzeń per sekunda) a tego nie robi (czeka na wcisnięcie "ESC") podczas gdy "ESC" ma jedynie przerwać pętle (zamknąć program).

repeat
{repeat until KeyPressed;}
Ch := ReadKey;
if Ch = #27 then
begin
halt(0);
end;
licznik:=licznik+1;
licznik:=1;
write(licznik);
until licznik<1;
end.

Może od tego są jakieś inne funkcje ale nie wiem.

0
matej47 napisał(a):

Kolejny problem z serii pt. pętla.☺️

Problem nie jest "z serii pętla"

Problem jest z czytaniem czegokolwiek zanim się klepie kod

jeśli czytałeś cokolwiek dokuemntacji, a nie kradłeś kod jak małpa, to trafiłeś na to

https://www.google.com/search?q=ReadKey+pascal
Pozycja pierwsza

2

ReadKey czeka na wciśnięcie jakiegoś klawisza i blokuje dalsze wykonanie programu. Powinieneś najpierw sprawdzić czy coś zostało wciśnięte, a jeśli tak, to dopiero wtedy pobrać kod klawisza i sprawdzić jaki jest:

{$mode objfpc}{$H+}

uses
  Crt;
begin
  repeat
    if KeyPressed() then
      if ReadKey() = #27 then
        break;

    Write('X');
    Delay(20);
  until False;
end.

Ale jeśli pracujesz z ReadKey, to musisz pamiętać, że w buforze klawiatury może być wiele znaków, a nie tylko jeden.

0

Muszę w SPACJA końcu zweryfikować tego emaila żebym mógł wam 👍

1 użytkowników online, w tym zalogowanych: 0, gości: 1