entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Error en pascal

program Project1;
uses crt;
type

  lista_usuario=^nodo_usuario;
  usuario=record
    nombre:string[30];
    password:string[30];
    end;
  nodo_usuario=record
    psig_usuario:lista_usuario;
    dato_usuario:usuario;
  end;

var
   rta_usuario:integer;
   rta:char;
  nuevo_usuario:usuario;
  l_u:lista_usuario;
  aux_login:usuario;
    procedure agregar_usuario(var l_u:lista_usuario;nuevo_usuario:usuario);
var
nuevo:lista_usuario;
begin
new(nuevo);
nuevo^.dato_usuario.nombre:=nuevo_usuario.nombre;
nuevo^.dato_usuario.password:=nuevo_usuario.password;
nuevo^.psig_usuario:=l_u;
l_u:=nuevo;
end;
function busca_usuario(l_u:lista_usuario;nuevo_usuario:usuario):usuario;
var
aux:lista_usuario;
aux2:usuario;
begin
     aux:=l_u;
     while(aux<>nil)and(aux^.dato_usuario.nombre<>nuevo_usuario.nombre)and(aux^.dato_usuario.password<>nuevo_usuario.password)  do
     begin
     aux:=aux^.psig_usuario;
     end;
     if (aux=nil)then
        begin
        writeln('No existe');
        aux2.nombre:='nnn';
        busca_usuario:=aux2;
        end
        else
        begin
        busca_usuario:=aux^.dato_usuario;
        end;
end;
procedure login;
begin
       writeln('  1.  INGRESAR    ');
       writeln('  2.  REGISTRARSE ');
    readln(rta_usuario);
     CASE(rta_usuario) OF
     1:
         begin
        writeln('Ingrese usuario');
        readln(nuevo_usuario.nombre);
        writeln('Ingrese contraseña');
        readln(nuevo_usuario.password);
        aux_login:=busca_usuario(l_u,nuevo_usuario);
        if(aux_login<>'nnn') then
         menu_principal;
         end;

    2:
        begin
        writeln('Ingrese usuario');
        readln(nuevo_usuario.nombre);
        writeln('Ingrese contraseña');
        readln(nuevo_usuario.password);
        aux_login:=busca_usuario(l_u,nuevo_usuario);
        if(aux_login='nnn') then
         agregar_usuario(l_u,nuevo_usuario)
         else
          writeln('Usuario ya existente,ingrese uno nuevo o presione S para salir');
          readln(rta);
          if(rta='s') then
           exit
           else
             writeln('Ingrese usuario');
             readln(nuevo_usuario.nombre);
             writeln('Ingrese contraseña');
             readln(nuevo_usuario.password);
             busca_usuario(l_u,nuevo_usuario);

end;
end;
end;
     begin
  l_u:=nil;
  end.

Uso lazarus para programar, no puedo solucionar el error, disculpen el desorden del código, saludos y gracias.
Los errores son los siguientes:

Compilar proyecto, Objetivo: project1.exe: Código de salida 1, Errores: 3
project1.lpr(66,21) Error: Operator is not overloaded: "usuario" = "Constant String"
project1.lpr(77,21) Error: Operator is not overloaded: "usuario" = "Constant String"

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @tomasibarra,

tengo el Pascal de veras muy oxidado, pero me parece que el error está cuando hacés las comparaciónes if(aux_login<>'nnn') y if(aux_login='nnn') ...

Fijate que estás comparanto aux_login, que en ambos casos es de tipo usuario que es un record, con el string 'nnn', siendo que al ser de diferente tipo, el IF intentará hacer un casting y al no poder hacerlo, asume que estás trabajando con un operador sobrecargado.

Supongo que la idea es comparar con el nombre de usuario 'nnn' que usás como bandera en busca_usuario: en ese caso, tenés que hacer la comparación con el elemento del record, que sí es un string:

if(aux_login.nombre<>'nnn'){

Probá eso en los 2 IF y contanos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta