UNIDAD 6: PROGRAMACION PASCAL REGISTROS Y ARCHIVOS DIRECTOS
TEMA 2: CREACION LECTURA Y GRABACION ARCHIVOS DISCO PASCAL
Son completamente similares a lo que se hizo con archivos secuenciales
GRABACION
Prog25.PAS
program prog25;
uses crt;
type
alumnos = RECORD
clave:integer;
nombre:string[30];
edad:integer;
status:char;
end;
var
alumno:alumnos;
archivo: file of alumnos;
BEGIN
clrscr;
(* creando y abriendo el archivo *)
assign(archivo,'c:\prog\alumnos.dat');
reset(archivo);
(* moviendo apuntador al final del archivo existente *)
seek(archivo,filesize(archivo));
(* capturando registro *)
write('dame clave : ');readln(alumno.clave);
write('dame nombre : ');readln(alumno.nombre);
write('dame edad : ');readln(alumno.edad);
(* cargando status *)
alumno.status :='A';
(* grabando el registro al archivo *)
write(archivo, alumno);
(* cerrando archivo y avisando *)
close(archivo);
writeln;writeln;
writeln('NUEVO REGISTRO INSERTADO');
readln;
END.
Recordar que la estructura que se uso para crear el archivo se debera usar siempre y con el mismo orden cuando se acceda al archivo con los procesos u operaciones anteriormente mencionados.
Observar que es completamente similar a la creacion de archivos secuenciales.
Se agergo un campo de status de tipo char que se cargo con el caracter 'A' para significar que este registro esta en altas, pueden usar status numericos para cargarlo con numeros que signifiquen diferentes cosas por ejemplo 1.-alta, 2.-baja, 3.- baja temporal, 4.- permiso, etc.
Recuerden que para que funcione el archivo ya debes estar creado, si no quieren usar el programa de creacion de archivos, pueden crearlo directamente en windows con file new text.
LECTURA
Prog26.pas
program prog26;
uses crt;
type
alumnos = RECORD
clave:integer;
nombre:string[30];
edad:integer;
status:char;
end;
var
alumno:alumnos;
archivo: file of alumnos;
BEGIN
clrscr;
(* creando y abriendo el archivo *)
assign(archivo,'c:\prog\alumnos.dat');
reset(archivo);
(* ciclo de lectura y despliegue registro *)
while not(EOF(archivo)) do
begin
read(archivo,alumno);
(* revisando status registro *)
if alumno.status = 'A' then
begin
write('clave : ');writeln(alumno.clave);
write('nombre : ');writeln(alumno.nombre);
write('edad : ');writeln(alumno.edad);
write('<enter> para continuar ');readln;;
end;
end;
(* cerrando archivo *)
close(archivo);
END.
Corrida:
Recordar que siempre debes estar revisando o validando el campo se status o bandera para conocer el estado del registro.
Tareas PROGRAMACION PASCAL
Crear archivos directos de alumnos, provedores, libros, productos, peliculas.