Pascal/Turbo Pascal - Error en codigo, ayuda!

 
Vista:

Error en codigo, ayuda!

Publicado por jorge (6 intervenciones) el 07/02/2007 17:02:33
Teniendo este codigo:

PROGRAM Pract_3a_5_4; {$APPTYPE CONSOLE}
USES
SysUtils, crt;
TYPE
informacion = RECORD
nombre: STRING[20];
apellidos: STRING[20];
NIF: STRING[20];
END;
agenda = ARRAY [1..5] OF informacion;
archivo = FILE OF informacion;
VAR
a: agenda;
eleccion: STRING;
contador: integer;
introducido: boolean;

y este procedimiento:

PROCEDURE grabarDatos (contador: integer); (* Guarda lo introducido en un fichero: "datos.dat" *)
VAR
aux: integer;
grabado : archivo;
BEGIN
assign (grabado, 'Datos.dat');
rewrite (grabado);
FOR aux:= 1 TO contador DO
BEGIN
write (grabado, a[aux].nombre); (* ERROR *)
write (grabado, a[aux].apellidos); (* ERROR *)
write (grabado, a[aux].NIF); (* ERROR*)
write (grabado);
END;
close (grabado);
END;

Me aparecen tres errores que dicen: "incompatible types": 'informacion' and 'ShortString'. (Donde he puesto lo de (*ERROR*)

Los datos que guardo han sido pedidos correctamente en otro procedimiento.

Alguien me puede ayudar a arreglarlo?

muchas gracias
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

RE:Error en codigo, ayuda!

Publicado por Carlos Guimaraenz (265 intervenciones) el 07/02/2007 18:56:43
Hola Jorge! Como declaraste el registro INFORMACION, y el tipo ARCHIVO como FILE OF INFORMACION, no puedes escribir en el archivo campo a campo, sino que debes escribir el registro entero.

Por lo tanto, lo siguiente:
write (grabado, a[aux].nombre); (* ERROR *)
write (grabado, a[aux].apellidos); (* ERROR *)
write (grabado, a[aux].NIF); (* ERROR*)
write (grabado); (*¿esta linea es para dejar un espacio?*)

Se resume a:
write (grabado, a[aux]); (* ERROR *)

No hace falta dejar un espacio, ya que cuando lees lo haces registro a registro.
Dejar una linea en un archivo te es de utilidad en un archivo de tipo TEXT, donde debes estructurar la información de una manera en que puedas entenderla, pero aquí es Pascal quien lo interpreta y te brinda la información tal como la necesitas.

Un abrazo!
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