uses
Crt;
const
TajneHaslo - 'TajemniczeHaslo'; var
PodaneHaslo : String; function PodajHaslo : String;
{ Funkcja czyta hasło bez wyświetlania go na ekranie. } var
Hasło : String;
Znak : Char;
begin
Hasło ' 1 ; repeat
Znak ReadKey; if (Znak <> #13) then begin
Write ('*');
Hasło :*■ Hasło + Znak; end;
until Znak - #13;
PodajHaslo Hasło;
end; {----------------------------------- PodajHaslo -}
begin
ClrScr;
Write ('Podaj hasło: ');
PodaneHaslo PodajHaslo;
Writeln;
if PodaneHaslo - TajneHaslo then Writeln ('2*2-4') else
Writeln ('Podałeś biedne hasło. ',
'Nie masz dostępu do tajnej informacji.');
Readln; end.
Warunek Znak = #13 oznacza sprawdzenie, czy znak ma kod ASCII 13 (taki kod ma klawisz Enter). Program działa doskonale. Ma tylko jedną wadę. Jeżeli nastąpi pomyłka, nie da się jej poprawić klawiszem Backspace (wciśnięcie klawisza program zinterpretuje jako znak o kodzie #8 i też dołączy do łańcucha hasła). W ćwiczeniu dodatkowym będziesz miał możliwość takiego poprawienia programu, żeby poprawnie interpretował wciśnięcie tego klawisza.
Jako ciekawostkę zapamiętaj, że wciśnięcie niektórych znaków (na przykład klawiszy kursora) powoduje umieszczenie w buforze nie jednej, lecz dwóch wartości (zera i dopiero właściwego kodu). Jeżeli będziesz pisał program, który ma obsługiwać także takie klawisze, musisz o tym pamiętać.
Pora zainteresować się, czym jest kursor i jak jego położenie wpływa na wypisywany tekst.