AYUDA DE ARCHIVOS PARA TURBO PASCAL
{Espero sea esto lo que quieres si no dame mas datos si tienes dudas pregunta te atenderé
lo mas rápido que pueda suerte}
program archregis;
uses
crt;
const
archivo : string = 'C:\REGPRU.DAT';
type
registro = record {Este es el registro que manejaremos}
ndni : longint;
nombre : string[100];
{Se pueden meter todos los datos que quieras}
end; {final del registro}
var
f : file of registro; {Para guardar el registro o los registros}
datos : registro; {Para trabajar con el registro}
procedure entrada; {Entrada de datos al registro}
begin
gotoxy(10,2);write('N§ DEL DNI : ');
gotoxy(23,2);readln(datos.ndni);
gotoxy(10,3);write('NOMBRE : ');
gotoxy(23,3);readln(datos.nombre);
{ Aqui mas entradas si las tubiera}
{Este tipo de entrada no es muy fiable pues readln no
detecta si es caracter o numero y despues salta el
error de entrada si no se controla es mejor crear
una funcion de entrada controlada para que sies numero
no se pueda entrar otra cosa que no sea numero}
end;
procedure guarda_registro;
begin
assign(f,archivo); {Asignamos el nombre del fichero}
{$I-} reset(f); {$I+} {Comprovamos su presencia o ausencia}
if ioresult <> 0 then {Si fuera mallor de 0 significaria que el
fichero no existe por lo tanto en nuestro
caso lo creamos y guardamos los datos}
begin
rewrite(f); {creamos fichero}
seek(f,0); {nos posicionamos en la posicion 0 inicio del
fichero}
write(f,datos); {guardamos los datos entrados fijate solo un
registro no mas}
close(f); {cerramos el fichero para que no se pierda nada}
end
else {encaso de que exista ya un fichero guardamos en el el
registro}
begin
seek(f,filesize(f)); {nos posicionamos en la ultima posicion
del fichero o sea al final ya que filesize(f)
nos facilita el tama¤o de las registros entrados}
write(f,datos);
close(f);
end;
end;
procedure verregistros;
var
tama, pos : longint;
tec : char;
begin
assign(f,archivo); {Asignamos el nombre del fichero}
{$I-} reset(f); {$I+} {Comprovamos su presencia o ausencia}
if ioresult <> 0 then {Si fuera mallor de 0 significaria que el
fichero no existe por lo tanto en nuestro
caso salimos sin mas informando del error}
begin
gotoxy(10,4);write('El Fichero nombre ',archivo,' no existe');
gotoxy(10,5);write('Pulse enter');
readln;
exit;
end
else {si existe tomamos los datos y los presenramos}
begin
tama := filesize(f) - 1; {los registros esistentes menos 1}
pos := 0; {primer registo del archivo}
repeat
seek(f,pos); {opuntamos al primer registro esto al inicio}
read(f,datos); {cargamos los datos de ese registro}
gotoxy(10,2);write('N§ DNI : ',datos.ndni);
gotoxy(10,3);write('Nombre : ',datos.nombre);
tec := readkey; {esperamos a pulsar una tecla}
if tec = #72 then {si pulsa la tecla de flecha arriva
decrementamos pos asta cero}
begin
pos := pos - 1;
if pos < 0 then
pos := 0;
end;
if tec = #80 then {si pulsa la tecla de flecha avajo
incrementamos pos asta fin de archivo}
begin
pos := pos + 1;
if pos > tama then
pos := tama;
end;
until tec = #27; {la tecla esc nos saca del proceso}
close(f);
end;
end;
procedure borradoarchivo;
begin
assign(f,archivo); {Asignamos el nombre del fichero}
{$I-} reset(f); {$I+} {Comprovamos su presencia o ausencia}
if ioresult <> 0 then
begin
exit;
end
else
begin {si existe lo anulamos}
close(f);
erase(f);
end;
end;
procedure menu;
var
tecla : char;
salir : boolean;
begin
salir := false;
repeat
clrscr;
gotoxy(10,2);write('***** MENU PRINCIPAL *****');
gotoxy(10,4);write(' 1 = Entrar datos');
gotoxy(10,5);write(' 2 = Ver datos');
gotoxy(10,6);write(' 3 = Borrado archivos');
gotoxy(10,7);write(' 4 = Salir');
gotoxy(10,9);write('<<< Elija Opcion >>>');
tecla := readkey;
if tecla in[#49..#52] then
begin
clrscr;
case tecla of
#49 : begin
entrada;
guarda_registro;
end;
#50 : verregistros;
#51 : borradoarchivo;
#52 : salir := true;
end;
end;
until salir = true;
end;
begin
menu;
end.
{Esto es como pequeño ensayo para entrenar}