Funcion retorna nil cuando hay datos validos
Publicado por DanielG (4 intervenciones) el 31/07/2021 01:12:56
Hola que tal como estan?
Tengo la siguiente funcion
el problema es que me devuelve nil cuando hay datos validos, incluso debugeando entra al if cuando son iguales los nombres y retorna el valor pero al terminar la recursión vuelve con nil, aunque en ningun momento debugeando entra en la rama del else ya que los datos q paso como parámetro son validos.
Aca checheo que me devuelve nil
Cualquier sugerencia es bienvenida
Gracias de antemano
Tengo la siguiente funcion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function autenticar(var clientes: arbClientes; nombreUsuario: string): arbClientes;
begin
if(clientes <> nil) then begin
if(nombreUsuario = clientes^.nombreUsuario) then
autenticar:= clientes
else begin
if(clientes^.nombreUsuario > nombreUsuario) then
autenticar(clientes^.ant, nombreUsuario)
else
autenticar(clientes^.sig, nombreUsuario)
end;
end
else
autenticar:= nil;
end;
el problema es que me devuelve nil cuando hay datos validos, incluso debugeando entra al if cuando son iguales los nombres y retorna el valor pero al terminar la recursión vuelve con nil, aunque en ningun momento debugeando entra en la rama del else ya que los datos q paso como parámetro son validos.
Aca checheo que me devuelve nil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure iniciarSesion(var productos: listaProductos; var clientes: arbClientes);
var
password, nombreUsuario: string;
usuario: arbClientes;
begin
writeln;
write('Introduce tu nombre de usuario: ');
readln(nombreUsuario);
write('Introduce tu password: ');
readln(password);
usuario := nil;
usuario := autenticar(clientes, nombreUsuario);
if(usuario = nil) then
writeln('Error: email o password incorrectos') //Imprime estooo
else
menuPrincipal(productos, clientes, usuario);
end;
Cualquier sugerencia es bienvenida
Gracias de antemano
Valora esta pregunta
0