Oppure

Loading
14/03/13 16:39
Pascal-Dude
Ciao a tutti, allora vorrei fare un programma che prima di iniziare chieda la password.
Fin qui tutto ok, lo so fare un banale
if password='giorgio' then ...PROGRAMMA... else Exit;

Ma vorrei che quando faccio il readln della pass mi compaiano i **** invece che i caratteri in chiaro!
writeln('Password?');
readln(password);


Io stavo pensando a un array di char (qui sotto fatto) e a ogni carattere mettere un * (con un repeat?) ma non ci riesco quindi sono accettati tutti i modi.

psw: array [1..7] of char;
for a:=1 to 7 do
begin
writeln('Carattere segreto ',a,' ?');
readln(pas[a]);
clrscr;
end;
b:=concat(pas[1],pas[2],pas[3],pas[4],pas[5],pas[6],pas[7]);

if b='giorgio' then ...PROGRAMMA... else Exit;



Riassumendo: Siete in grado di creare un programma che quando mi dice di introdurre una password non la faccia comparire in chiaro?
Ultima modifica effettuata da Pascal-Dude 14/03/13 16:44
aaa
14/03/13 17:22
Poggi Marco
Invece di readln, metti readKey. (freepascal.org/docs-html/rtl/crt/…)
aaa
15/03/13 14:50
Pascal-Dude
Geniale! Non ci avevo pensato, grazie.

EDIT: Ci sono riuscito sei un grande grazie.

program asterisk;
uses crt;
var a:integer;
b:string;
ch: array [1..7] of char;
begin
 writeln('Inserisci la password misteriosa');
for a:=1 to 7 do
begin
   ch[a]:=ReadKey;
end;
b:=concat(ch[1],ch[2],ch[3],ch[4],ch[5],ch[6],ch[7]);
writeln('La password misteriosa e'' ',b);
readln;
end.
Ultima modifica effettuata da Pascal-Dude 15/03/13 15:08
aaa
15/03/13 18:10
Poggi Marco
Si può fare qualcosa di più semplice:
program asterisk;
uses crt;
var a:integer;
b:string;

begin
 clrScr;
 write('Inserisci la password misteriosa ');
 b:=''; {inizializzo b con una stringa vuota}
 for a:=1 to 7 do
 begin
   b:=concat(b, ReadKey); {aggiungo direttamente il carattere letti in b}
   write('*'); {scrivo un asterisco di conferma}
 end;
 writeln;
 writeln('La password misteriosa e'' ',b);
 readln;
end.
aaa