Jak wyczyścić bufor klawiatury? Należy czytać kolejne znaki, aż okaże się pusty. Oczywiście tych znaków możemy nigdzie nie zapamiętywać — traktujmy je jak śmieci. Wykorzystamy kolejne dwie funkcje: KeyPressed, sprawdzającą, czy coś jest w buforze, oraz ReadKey, czytającą (i usuwającą) pierwszy znak z bufora, program cw4_14;
{ Program pokazuje działanie bufora klawiatury. Wstrzymuje }
{ działanie na 5 sekund. Po zakończeniu przerwy w buforze }
{ nie bedzie wciśniętych znaków, ponieważ go wyczyścimy. }
{ Katalog r4_03 : 4_14.pas }
Crt;
Tekst : String;
procedurę CzyscBuforKlawiatury;
{ Procedura czyści bufor klawiatury. }
while KeyPressed doReadKey; end; {-------CzyscBuforKlawiatury -}
ClrScr;
Writeln ('Teraz czekam 5 s. ,
'w tym czasie wciśnij kilka razy rożne klawisze. ');
Delay (5000);
Writeln ('Koniec czekania.'); Writeln;
Write ('Teraz podaj liczbę ',
'(wciśnięte znaki sie nie pojawiaja!): ');
CzyscBuforKlawiatury;
Readln (Tekst);
Writeln ('Tekst, który wprowadziłeś to: ', Tekst);
Readln; end.
Pomimo wciskania klawiszy w czasie przerwy, podczas czytania tekstu te zaszłości nam się nie pojawią.
Pamiętasz program z ćwiczenia 3.29? Wczytywanie hasła nie było dobre, ponieważ hasło wyświetlało się na ekranie i każdy mógł go podejrzeć. Aby temu zapobiec, skorzystamy z funkcji ReadKey, która ma tę dobrą cechę, że nie wyświetla wczytanego znaku z bufora. Będziemy więc czytać kolejne znaki, aż do napotkania znaku Enter, sklejać z nich hasło, a zamiast niego wyświetlać gwiazdki.
program cw4_15;
{ Program czyta hasło, lecz nie wyświetla go na ekranie, }
{ zamiast tego wyświetlając gwiazdki. Dezeli podane hasło }
{ jest poprawne, wyświetla tajna informacje. }
{ Katalog r4_03 : 4_15.pas }