Pascal/Turbo Pascal - Pascal no espera algunos Readln

 
Vista:

Pascal no espera algunos Readln

Publicado por Emanuel (2 intervenciones) el 13/11/2022 17:47:51
Estoy haciendo un programa para guardar contraseñas y cuando leo la lista de las contraseñas guardadas y le pido al usuario que ingrese de cuál quiere ver la contraseña, se saltea el Readln de una variable auxiliar y no se porque, intente poner readln; antes o después de el readln de la variable pero como que sobrescribe un espacio en blanco en la variable, les dejo a continuación la parte del código:
Seguir:= 'S';
While (Seguir = 'S') or (Seguir = 's') Do
Begin
ClrScr;
WriteLn ('Lista de contraseñas guardadas: ');
WriteLn (' ');
ImprimirLista(Lista);
WriteLn (' ');
WriteLn ('¿Cuál contraseña queres ver?');
ReadLn (Aux); //(ESTE READLN SE SALTEA)//
WriteLn (' ');
If (BuscarContra(Lista,Aux) <> Nil) Then
WriteLn (BuscarContra(Lista,Aux)^.User, ' | ', BuscarContra(Lista,Aux)^.Contra)
Else
WriteLn ('No existe esa contra.');
WriteLn (' ');
WriteLn ('¿Queres ver otra? |S| para si, |N| para no');
Repeat
Readln (Seguir);
If (Seguir <> 'S') And (Seguir <> 's') And (Seguir <> 'n') And (Seguir <> 'N') Then
WriteLn ('Ponelo bien.');
Until (Seguir = 'S') or (Seguir = 's') or (Seguir = 'n') or (Seguir = 'N');
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
Imágen de perfil de Leonardo

Pascal no espera algunos Readln

Publicado por Leonardo (1 intervención) el 13/11/2022 18:27:47
Me imagino sea la declaración de la variable Aux
Verifica el tipo. Otra cosa es que veo trabajas con punteros. Asegura que ningún puntero sobre escriba la memoria ocupada por Aux
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

Pascal no espera algunos Readln

Publicado por Emanuel (2 intervenciones) el 16/11/2022 22:19:44
Gracias por su respuesta, ya estuve comprobando si en algún momento se sobrescribe la memoria en Aux pero no encontré ningún momento donde eso pase, la función que utilizo de BuscarContra funciona bien, por si acaso adjunto el código pero en otros contextos funciona sin problemas, el espacio de la variable Aux se sobrescribe si yo uso un " Readln; " antes o después del " Readln(Aux); " pero es la unica forma que encuentro de que no se lo salte, lo curioso es que cuando uso un Readln; antes de leer la variable, en la primera vez del ciclo funciona perfectamente, pero del segundo ciclo en adelante no.

Código de la función utilizada:

Function BuscarContra (Lista: PuntLista; Nombre: String): PuntLista;
Begin
If (Lista <> Nil) Then
Begin
If (Lista^.Nombre = Nombre) Then
BuscarContra:= Lista
Else
BuscarContra:= BuscarContra(Lista^.Sig, Nombre);
End
Else
BuscarContra:= Nil;
End;
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
sin imagen de perfil

Pascal no espera algunos Readln

Publicado por Atenea (2 intervenciones) el 24/02/2023 22:56:09
Buenas.
Quería saber si pudo resolver el problema debido a que me está sucediendo lo mismo en mi programa. Si es así me podría ayudar. Gracias
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