Помощь - Поиск - Пользователи - Календарь
Полная версия: Пароль: скрытая строка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Rocket
Мне нужно реализовать пароль типа "скрытая строка", т.е. при вводе очередного символа на экране отображается значёк "*", который скрывается очередной символ.
Вот мой код:

program pass;
uses crt;

var s: string;
i: integer;
c: char;
k: integer;
key: string;
s1,s2:string;

function ToRus(s: string): string;
var p: byte;
begin
for p := 1 to length(s) do
case s[p] of
'А'..'п': dec (s[p], 64);
'р'..'я': dec (s[p], 16);
end;
ToRus:=s;

end;

begin

writeln(ToRus('Введите пароль:'));

k:=1;
key:='password';

while(k=1) do
begin
c:=readkey;
s:=concat(s,c);
if (ord© = 13) then k:=0
else
begin
k:=1;
write('*');
end;
end;

writeln;
writeln(key);
writeln(s);
writeln;


if s<>key then
writeln(ToRus('Доступ запрещен.'))

else
writeln(ToRus('Доступ разрешен.'));

readkey;
clrScr;
end.


Почему не выполняется условие равенства? Я не правильно формирую строку s?
volvo
Сначала проверяем, не нажат ли Enter, и только если нет - добавляем к строке символ (вместо Concat можно пользоваться обычным "+", кстати)...
while(k=1) do
begin
c:=readkey;

if (ord© = 13) then k := 0
else begin
k:=1;
write('*');
s:=concat(s,c);
end;
end;
У тебя же сравнивались строки "password" и "password#13". Чтобы ловить такие вещи - делай:
writeln;
writeln('|'+key+'|');
writeln('|'+s+'|');
writeln;
, лишние пробелы и символы перевода строки очень четко отслеживаются.
Rocket
Цитата(volvo @ 5.12.2009 1:59) *

Сначала проверяем, не нажат ли Enter, и только если нет - добавляем к строке символ (вместо Concat можно пользоваться обычным "+", кстати)...
while(k=1) do
begin
c:=readkey;

if (ord© = 13) then k := 0
else begin
k:=1;
write('*');
s:=concat(s,c);
end;
end;
У тебя же сравнивались строки "password" и "password#13". Чтобы ловить такие вещи - делай:
writeln;
writeln('|'+key+'|');
writeln('|'+s+'|');
writeln;
, лишние пробелы и символы перевода строки очень четко отслеживаются.

Спасибо большое за помощь и за совет : )
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.