Pascal/Turbo Pascal - conversion de caracteres

   
Vista:

conversion de caracteres

Publicado por sonny (10 intervenciones) el 20/04/2008 08:53:02
hola a todos, tengo una preguntica buenisima..resulta que se me ocurrio crear algo asi como un password para ingresar...pero quiero que a medida el usuario vaya digitando las entradas se conviertan en asterisco para que sea mas realista....

por ejemplo la clave es "forever" cuando le aparezca el mensaje 'Introduce la clave de acceso...' se vayan convirtiendo en *******.....

gracias....por su colaboracion.

aqui dejo parte del codigo...

program ClaveDeAcceso;
var
ClaveCorrecta, Intento: String[30];
begin
ClaveCorrecta := 'forever';
repeat
WriteLn( 'Introduce la clave de acceso...' );
ReadLn( Intento )
until Intento = ClaveCorrecta
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:conversion de caracteres

Publicado por Roberto (56 intervenciones) el 21/04/2008 08:14:46
Tienes que usar la funcion Readkey que espera por un caracter para continuar sin mostrar el caracter en pantalla.

Por ejemplo para hacer lo que tu quieres podria quedar asi,

program ClaveDeAcceso;
var
ClaveCorrecta, Intento: String[30];
car:char;

begin
ClaveCorrecta := 'forever';
repeat
clrscr;
intento:='';

WriteLn( 'Introduce la clave de acceso...' );

repeat

car:=readkey
write( '* ');

if not( car in [#27,#13]) then
intento:=intento+car;

until car in [#13,#27]

until Intento = ClaveCorrecta
end.

Lo que se hace es "Capturar" la entrada de caracteres con la funcion Readkey, cada caractere que se recibe se guarda en car, inmediatamente despues de la captura se escribe en pantalla el * y posteriormente si no se presione enter o escape cada caracter se guarda en la cadena inento, este ciclo de captura termina precisamente con enter o escape luego se hace la comparacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:conversion de caracteres

Publicado por sonny (10 intervenciones) el 22/04/2008 04:34:00
gracias roberto...pero ahora estuve intentando de agregar mas codigo pero no se como anexarlo..te explico despues de que compruebe si la clave es correcta o no; debe de entrar a realizar otras cosas...que ire añadiendo...la clave es el principio del programa si le da el acceso entonces debe entrar a realizar la suma de dos numero por ejemplo....

como lo haria?.......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:conversion de caracteres

Publicado por Roberto Garcia (56 intervenciones) el 22/04/2008 17:32:26
Bueno, en ese caso lo que podrias hacer es convertir el programa en una funcion que te devuelva verdadero cuando la clave sea correcta y falso cuando no, y si es verdadero pues haces lo que tengas que hacer y si no pues no. Eventualmente podrias usar una unidad para colocar la funcion de acceso y asi simplificar el programa principal.

Entonces, la funcion de acceso podria quedar asi.

program ProtegidoconClave;
uses crt;

var
resp:char;

function Acceso:Boolean;
var
ClaveCorrecta, Intento: String[30];
car:char;

begin
Acceso:=false;
ClaveCorrecta := 'forever';
clrscr;
intento:='';

WriteLn( 'Introduce la clave de acceso...' );

repeat

car:=readkey
write( '* ');

if not( car in [#27,#13]) then
intento:=intento+car;
until car in [#13,#27]

if (car in [#13]) and (ClaveCorrecta=intento) then
acceso:=true

end;

begin
repeat

if acceso then begin
{
Aqui haces todo lo que quieras hacer
}
end
else begin
writeln('No se puede acceder a la aplicacion')
writeln('Desea volver a intentar (S,N)');
resp:=readkey;
end;
Until (resp in ['s','S']);

end.

Hay que notar que este es un codigo muy muy basico, por ejemplo si presionas las teclas del cursor durante la peticion de contraseña los contara igual como entrada de caracteres, puedes hecar un vistazo a http://mx.geocities.com/antrahxg/pascal/especiales.html y http://mx.geocities.com/antrahxg/pascal/keypressed.html para obtener un poco mas de informacion sobre como tratar readkey

Ademas hay muchas formas de tratar la salida, por ejemplo si presionando ESC quieres que se termine el programa puedes validar el caracter #27 dentro de la funcion acceso

if car=#27 then
halt(1);

Asi sales del programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar