Chodzi mianowicie o to, że ReadLN przyjmuje typ zmiennej char. Co zrobić, aby można było w niego wpisać tylko jedną literę (znak)? Ma to działać na zasadzie, że nowa litera zastępuje poprzednią albo trzeba tę pierwszą wykasować (backspace) aby móc wpisać drugą.
readkey i wszystko jasne
Możesz napisać coś więcej, bo mi chodzi o coś takiego jak jest w biosie. Kiedy pyta się o to czy zapisać ustawienia. Jeśli wybierzesz ‘n’, a potem ‘y’ to y jakby zastępuje n (nie pojawia się obok tylko na miejscu n). Nie za bardzo wiem jak readkey wykorzystać do tego.
A spróbuj wykorzystać to:
Ten efekt może być, tylko ze jest to mocno nie dopracowane. Wiem już co i jak, to sobie zrobię thx.
Lenie z was…
{żeby było ładnie, wsadzić do uniwersalnej procedury z obsługą dowolnej liczby tolerowanych znaków przekazywanych jako argument (tablica?) i klawisza , który powodowałby przypisanie do zmiennej np. #0}
PROGRAM DajZnak;
USES
CRT; {ReadKey}
VAR
znak, temp : Char;
BEGIN
Write('Wprowadź Y lub N: ');
REPEAT {dopóki nie dostaniemy (#13), wczytujemy}
REPEAT {wczytujemy z klawiatury dopóki nie dostaniemy tego co chcemy lub (#13)}
temp := ReadKey;
temp := UpCase(temp); {jeśli dostaliśmy małą literę, zmieniamy ją na dużą, co by nie komplikować później kodu}
IF (temp = 'Y') OR (temp = 'N') THEN znak := temp; {zapamiętujemy wartość zmiennej tymczasowej, jeśli to y lub n - bez tego finalna wartość zmiennej zawsze będzie #13}
UNTIL (temp = 'Y') OR (temp = 'N') OR (temp = #13);
Write(znak,#8); {jeśli pętla się skończyła, czyli dostaliśmy coś fajnego, wypisujemy to i cofamy sie o znak do tyłu (#8 to Backspace)}
UNTIL temp = #13;
WriteLn;
WriteLn('Wprowadzono ',znak);
END.
Kompilowane Free Pascalem działa znośnie.