Bueno, aqui te dejo un programa que acabo de hacer. Este es el método que yo utilizo: Creo mi propia estructura de datos con 
TYPE y luego creo un archivo de la forma 
Var F: File of TEstructura. Como verás, estoy creando un archivo (binario) de estructura, y voy guardando registro por registro. Como este tipo de archivo no se puede abrir con 
APPEND como los archivos de texto, entonces utilizo un 
archivo auxiliar para no perder los datos anteriores cada vez que vaya a introducir uno nuevo. Ahora, creo que necesito limpiar el buffer, porque la primera lectura la hace bien, pero en las siguientes lecturas me salta la lectura del nombre....
Ahora explicado como funciona mi archivo, lo que pregunto es: ¿existe otra forma de guardar registros que no sea esta? Ando buscando otra forma que tambien me permita recuperar los datos cuando sea necesario... como esta...
A continuación mi código:
Uses CRT;
const fname='datos1.dat';
      resp='respaldo.dat';
type persona = Record
     nombre: string[10];
     edad: integer;
End;
var f,r: file of persona;
    k: char;
    p,pa: persona;
function ExistF(fn: string):boolean;
var f: file;
Begin
     {$I-}
     assign(f,fn);
     reset(f);
     close(f);
     {$I+}
     ExistF:= (IOResult=0) and (fn<>'');
End;
procedure menu;
Begin
     clrscr;
     gotoxy(2,2);write('MENU:');
     gotoxy(3,4);write('[1] >> Agregar');
     gotoxy(3,5);write('[2] >> Imprimir');
     gotoxy(3,6);write('[ESC] >> Salir');
     gotoxy(2,8);write('Opcion: ');
     k:=readkey;
End;
procedure Agregar;
Begin
     clrscr;
     gotoxy(2,2);write('AGREGAR DATOS');
     gotoxy(2,4);write('Nombre: ');
     read(p.nombre);
     gotoxy(2,5);write('Edad: ');
     read(p.edad);
     reset(f);
     rewrite(r);
     while not eof(f) do
     Begin
          read(f,pa);
          write(r,pa);
     End;
     close(f);
     write(r,p);
     close(r);
     rewrite(f);
     reset(r);
     while not eof(r) do
     Begin
          read(r,pa);
          write(f,pa);
     End;
     close(f);
     close(r);
End;
procedure Imprimir;
Begin
     clrscr;
     reset(f);
     while not eof(f) do
     Begin
          read(f,p);
          writeln(p.nombre:15,p.edad:5);
     End;
     writeln('<Fin de Arvhico...>');
     readkey;
     close(f);
End;
 
Begin
     assign(f,fname);
     assign(r,resp);
     if not existf(fname) then
     Begin
          rewrite(f);
          close(f);
     End;
     while k<>#27 do
     Begin
          menu;
          if k='1' then agregar;
          if k='2' then imprimir;
     End;
End.
 
Lo que trato es de aprender más métodos... Saludos y Gracias... 
