Error al compilar(Listas dinamicas)
Publicado por Ander Martin (2 intervenciones) el 02/06/2011 23:24:04
Hola.Al compilar el siguente programa se produce un CONSTRAINT_ERROR y nose como solucionarlo, el erro se produce en donde e subrayado.El programa, son 3 apuntadores a una lista y dependiento si la persona q me pasan es de una clase o otra( noble o plebeyo) pues o la tengo q meter despues del apuntador del ultimo noble o despues de el ultimo, al final de la lista(los nobles siempre van primero).y en ambos casos actualizar el apuntador y pasarlo al objetoq se a metido..
si alguien me pudiese explicar el xq d este error y como solucionarlo le estaria muy muy muy agradecido!!!gracias de antemano
procedure Añadir (
Cm : in out T_Cola_Medieval;
E : in T_Persona) is
-- añade el elemento E en CM.
Nuevo,Aux : A_Nodo;
begin
Nuevo:= new T_Nodo;
Nuevo.Info:=E;
if Cm.Primero/=null then
if Nuevo.Info.Noble then
Nuevo.sig:=Cm.Ult_Noble;
Aux:=Nuevo.sig;
Nuevo.Sig:=Aux;
Cm.Ult_Noble.Sig:=Nuevo;
Cm.Ult_Noble:=Nuevo;
else
Nuevo.sig:=null;
Cm.Ultimo.Sig:=Nuevo;
Cm.Ultimo:=Nuevo;
end if;
else
Nuevo.Sig:=null;
if Nuevo.Info.Noble=false then
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
else
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
end if;
end if;
end Añadir;
Y la declaracion de los tipos:
type T_Nodo;
type A_Nodo is access T_Nodo;
type T_Nodo is
record
Info : T_Persona;
Sig : A_Nodo;
end record;
type T_Cola_Medieval is
record
Primero,
Ult_Noble,
Ultimo : A_Nodo;
end record;
subtype T_Info is String(1..20);
type T_Persona is
record
Noble : Boolean;
Info : T_Info; -- otros tipos de información
end record;
si alguien me pudiese explicar el xq d este error y como solucionarlo le estaria muy muy muy agradecido!!!gracias de antemano
procedure Añadir (
Cm : in out T_Cola_Medieval;
E : in T_Persona) is
-- añade el elemento E en CM.
Nuevo,Aux : A_Nodo;
begin
Nuevo:= new T_Nodo;
Nuevo.Info:=E;
if Cm.Primero/=null then
if Nuevo.Info.Noble then
Nuevo.sig:=Cm.Ult_Noble;
Aux:=Nuevo.sig;
Nuevo.Sig:=Aux;
Cm.Ult_Noble.Sig:=Nuevo;
Cm.Ult_Noble:=Nuevo;
else
Nuevo.sig:=null;
Cm.Ultimo.Sig:=Nuevo;
Cm.Ultimo:=Nuevo;
end if;
else
Nuevo.Sig:=null;
if Nuevo.Info.Noble=false then
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
else
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
end if;
end if;
end Añadir;
Y la declaracion de los tipos:
type T_Nodo;
type A_Nodo is access T_Nodo;
type T_Nodo is
record
Info : T_Persona;
Sig : A_Nodo;
end record;
type T_Cola_Medieval is
record
Primero,
Ult_Noble,
Ultimo : A_Nodo;
end record;
subtype T_Info is String(1..20);
type T_Persona is
record
Noble : Boolean;
Info : T_Info; -- otros tipos de información
end record;
Valora esta pregunta


0