Ejercicio de manejo de archivos
Espero esto te sirva en tu tarea-
program arcivos;
uses
crt,dos;
type
campos = record
cedula : longint;
nombre : string;
direccion : string;
edad : integer;
fecha_naci : string[10];
sexo : char;
ciudad : string;
end;
const
archivo : string = 'Registro.dat';
var
f : file of campos;
dato : campos;
tecl : char;
procedure guardamos(d : campos);
begin
assign(f,archivo);
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
rewrite(f);
seek(f,0);
write(f,dato);
close(f);
end
else
begin
seek(f,filesize(f));
write(f,dato);
close(f);
end;
end;
procedure entradadatos;
begin
clrscr;
writeln('***** Entrada Datos *****');
writeln;
write('Entre N. Cedula : ');
readln(dato.cedula);
write('Entre Nombre : ');
readln(dato.nombre);
write('Entre Direccion : ');
readln(dato.direccion);
write('Entre Edad : ');
readln(dato.edad);
write('Entre Fecha Nacimiento : ');
readln(dato.fecha_naci);
write('Entre Sexo : ');
readln(dato.sexo);
write('Entre Ciudad : ');
readln(dato.ciudad);
writeln;
writeln('Datos Correctos [S\N]');
repeat
tecl := upcase(readkey);
until tecl in['S','N'];
if tecl = 'S' then
guardamos(dato)
else
writeln('No Se Guardaron Los Datos ');
end;
function fecha : string;
const
dias : array [0..6] of String[9] =
('domingo','lunes','martes',
'mi‚rcoles','jueves','viernes',
'S bado');
var
y, m, d, dow : Word;
dia, mes, ayo : string[4];
begin
GetDate(y,m,d,dow);
str(m,dia);
str(d,mes);
str(y,ayo);
fecha := mes + '/' + dia + '/' + ayo;
end;
function ponceros(w : word) : string;
var
s : string;
begin
Str(w:0,s);
if length(s) = 1 then
s := '0' + s;
ponceros := s;
end;
function hora : string;
var
h, m, s, hund : word;
begin
gettime(h,m,s,hund);
hora := ponceros(h) + ':' + ponceros(m);
end;
procedure reporte;
var
di, letra : char;
cont : longint;
rep : campos;
begin
clrscr;
writeln('<<<<<< Presentacion Reporte >>>>>>');
write('Entre La Letra Del Nombre : ');
readln(letra);
write('Entre La Letra De La Direccion : ');
readln(di);
di := upcase(di);
letra := upcase(letra);
clrscr;
assign(f,archivo);
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
writeln('Error De Archivo O No Existe Pulse Una Tecla');
readkey;
end
else
begin
writeln('Reporte Realizado Fecha Y Hora = ',fecha,' ',hora);
for cont := 0 to filesize(f) - 1 do
begin
seek(f,cont);
read(f,rep);
if (upcase(rep.nombre[1]) = letra) and
(upcase(rep.direccion[1]) = di) then
writeln(rep.nombre,' ',rep.direccion);
end;
close(f);
writeln('Pulse Una Tecla');
readkey;
end;
end;
procedure menu;
var
tec : char;
sal : boolean;
begin
sal := false;
repeat
clrscr;
writeln('||||||| Menu |||||||');
writeln;
writeln('[E] = Entrada Datos');
writeln('[R] = Reporte');
writeln('[S] = Salir');
writeln;
writeln('##### Elija Opcion #####');
repeat
tec := upcase(readkey);
until tec in['E','R','S'];
case tec of
'E' : entradadatos;
'R' : reporte;
'S' : sal := true;
end;
until sal = true;
end;
begin
menu;
end.