Wczytywanie znaków z klawiatury do czasu wpisania Esc

Wczytywanie znaków z klawiatury do czasu wpisania Esc
M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
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).

Kopiuj
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.

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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:

Kopiuj
{$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.

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.