Pascal/Turbo Pascal - Error de tipos

   
Vista:

Error de tipos

Publicado por Maria Morales (1 intervención) el 05/12/2011 10:50:22
Hola, estoy haciendo un programa en pascal y al guardar en un fichero me da error de tipos, y no se porque no veo el error espero que me puedan ayudar . gracias


CONST (*definicion de constantes*)
MINPLANTA=1; (*numero de la primera planta*)
MAXPLANTA=9; (*numero de la ultima planta*)
PRIMERAHAB=1; (*numero primera habitacion*)
ULTIMAHAB=15; (*numero ultima habitacion*)
NCNOMBRE=15; (*numero caracteres nombre*)
NCAPELLIDOS=35; (*numero apellido caracteres*)
NDNI=10; (*numero caracteres DNI*)
NCNACION=3; (*numero de caracteres del identificador del pais*)
ENFERMEDAD=35; (*numero de caracteres para la enfermedad del paciente*)
NUMPACIENTES=135; (*numero de pacientes del hospital*)

TYPE
TPlanta=MINPLANTA..MAXPLANTA;
TNumHabitacion=PRIMERAHAB..ULTIMAHAB;

TNombre= string[NCNOMBRE]; (*tipo para almacenar el nombre*)
TApellidos= string[NCAPELLIDOS]; (*tipo para almacenar apellidos*)
TDNI= string[NDNI]; (*tipo para almacenar el pasaporte*)
TPais= string[NCNACION]; (*tipo para almacenar el pais*)
TEnfermedad= string[ENFERMEDAD]; (*tipo para almacenar la enfermedad del paciente*)
TNumPacientes= 0..NUMPACIENTES; (*Contendr  el numero de pacientes ingresados*)

THabitacion= RECORD
ocupada: boolean; (*Indica si esta o no ocupada la habitacion*)
nombre: TNombre; (*Nombre del paciente*)
apellidos: TApellidos; (*apellidos paciente*)
DNI: TDNI; (*numero de pasaporte*)
pais: TPais; (*nacionalidad*)
edad: integer; (*edad del paciente*)
enfermedad: TEnfermedad; (*breve descripcion de la enfermedad de ingreso*)
END;

TPacientes= ARRAY [TPlanta, TNumHabitacion] OF THabitacion;
(*matriz que contiene los pacientes del hospital*)

THospital= RECORD
numPacientes: TNumPacientes;
pacientes: TPacientes;
END; (*representa al hospital*)

TListado=RECORD
nombre: TNombre;
apellidos: TApellidos;
enfermedad: TEnfermedad;
numHabitacion: integer;
END; (*para ordenar los pacientes para el listado*)

TListadoPacientes= ARRAY [1..NUMPACIENTES] OF TListado;


TArchivoBinario= FILE OF THospital;

VAR
miFich: TArchivoBinario;
hospital: THospital;
PROCEDURE guardar (VAR hospi1:THospital; VAR datos1:TArchivoBinario);
(*hospi y datos se pasan por referencia por motivos de eficiencia*)
VAR
s1, s2: integer;

BEGIN (*guardar*)
(*abrir fichero*)
rewrite(datos);
(*procesar fichero*)
WITH hospi1 DO BEGIN
FOR s1:=MINPLANTA TO MAXPLANTA DO
FOR s2:=PRIMERAHAB TO ULTIMAHAB DO
write(datos1, pacientes[s1, s2]); {aqui me da el error de tipos}
END;
(*cerrar fichero*)
close(datos);
writeln('Pedidos guardados.');
END; (*guardar*)


BEGIN
ASSIGN (miFich(*nombreLogico*), 'estadoHospital.txt'(*nombreFisico*));
guardarADisco(hospital, miFich);
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

Error de tipos

Publicado por ramon (2072 intervenciones) el 05/12/2011 16:46:57
{Revisa esto}

{El nuevo procedimiento basado en tu procedimiento}

PROCEDURE guardar (VAR hospi1:THospital; VAR datos1:TArchivoBinario);
(*hospi y datos se pasan por referencia por motivos de eficiencia*)
VAR
s1, s2: integer;

BEGIN (*guardar*)
(*abrir fichero*)
rewrite(datos1);
(*procesar fichero*)
{Se supone entrados los datos anterior mente pues lo que}
{guardas es el registro hospi1 en conjunto, no los datos}
{del registro hospi1 indibiduales}
write(datos1,hospi1); {aqui me da el error de tipos}
(*cerrar fichero*)
close(datos1);
writeln('Pedidos guardados.');
END; (*guardar*)

{Tu procedimiento}

PROCEDURE guardar (VAR hospi1:THospital; VAR datos1:TArchivoBinario);
(*hospi y datos se pasan por referencia por motivos de eficiencia*)
VAR
s1, s2: integer;

BEGIN (*guardar*)
(*abrir fichero*)
rewrite(datos1);
(*procesar fichero*)
WITH hospi1 DO BEGIN
FOR s1:=MINPLANTA TO MAXPLANTA DO
FOR s2:=PRIMERAHAB TO ULTIMAHAB DO
write(datos1, pacientes[s1, s2]); {aqui me da el error de tipos}
END;
(*cerrar fichero*)
close(datos);
writeln('Pedidos guardados.');
END; (*guardar*)
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