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.
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


0