У меня есть две процедуры.
Первая добавляет в файл запись:
Procedure Add_Rec(app:RecType;way:string);
    var
      f:FileType;
      recc:RecType;
      i:integer;
    begin
      Assign(f,way);
      reset(f);
      while not(Eof(f)) do
        begin
          read(f,recc);
          inc(i);
        end;
      close(f);
      rewrite(f);
      writeln('---',i);
      Seek(f,i);
      write(f,app);
      close(f);
    end;
Причем делать так :
reset(f);
      while not(Eof(f)) do
        begin
          read(f,recc);
          inc(i);
        end;
      close(f);
вместо того чтобы использовать Seek(f, FileSize(f)) мне приходится, так как FileSize всегда возвращает 0(именно в этой процедуре, в остальных работает нормально) 
Вторая выводит на экран содержимое файла:
procedure output(way:string);
    var
      f:filetype;
      rec:RecType;
      i:integer;
    begin
      assign(f,way);
      reset(f);
      if filesize(f) > 0 then
        for i:=1 to filesize(f) do
          begin
            read(f,rec);
            writeln('Запись ',i,':');
            writeln('  Марка:    ',rec.model);
            writeln('  Цвет:     ',rec.color_car);
            writeln('  Гос. номер:    ',rec.state_number);
            writeln('  Владелец: ',rec.owner);
          end
      else
        writeln('Файл пуст.');
      close(f);
    end;
Вот результат:

Все записи кроме последней становятся пустыми. Что происходит? Я  никак не могу понять.