Работа с файлами записей, ошибка Bad typed file size - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Пишу лабораторную по записям. При попытке добавления новой записи второй раз или удаления записи - ошибка в процедуре add_rec Как ни пытаюсь, не могу понять, из-за чего Подскажите, пожалуйста, как исправить

Решение задачи: «Работа с файлами записей, ошибка Bad typed file size»

textual
Листинг программы
program test;
 
type
  TType = record
    a, b: integer;
  end;
  TTypeFile = file of TType;
var
  x: TType;
  i: integer;
  f: TTypeFile;
begin
  Assign(f, 'test.dat');
  rewrite(f);
  for i := 1 to 10 do
  begin
    x.a := i;
    x.b := 2 * i;
    Write(f, x);
  end;
  Close(f);
 
  reset(f);
  writeln('Filesize = ', filesize(f));
  while not EOF(f) do
  begin
    Read(f, x);
    Write('(', x.a, ', ', x.b, ')');
  end;
  writeln;
  Close(f);
 
  reset(f);
  seek(f, filesize(f));
  x.a := 11;
  x.b := 22;
  Write(f, x);
  Close(f);
 
  reset(f);
  writeln('Filesize = ', filesize(f));
  while not EOF(f) do
  begin
    Read(f, x);
    Write('(', x.a, ', ', x.b, ')');
  end;
  writeln;
  Close(f);
end.

Объяснение кода листинга программы

  1. Объявление типов данных:
    • TType = record a, b: integer; end;
    • TTypeFile = file of TType;
  2. Создание переменных:
    • x: TType;
    • i: integer;
    • f: TTypeFile;
  3. Открытие файла 'test.dat' для записи (режим rewrite):
    • Assign(f, 'test.dat');
  4. Запись 10-ти элементов в файл:
    • for i := 1 to 10 do begin
      • x.a := i;
      • x.b := 2 * i;
      • Write(f, x); end;
  5. Закрытие файла:
    • Close(f);
  6. Открытие файла 'test.dat' для чтения:
    • reset(f);
  7. Определение размера файла:
    • writeln('Filesize = ', filesize(f));
  8. Чтение и вывод на экран содержимого файла:
    • while not EOF(f) do begin
      • Read(f, x);
      • Write('(', x.a, ', ', x.b, ')'); end;
  9. Закрытие файла:
    • Close(f);
  10. Открытие файла 'test.dat' для записи:
    • reset(f);
  11. Переход к последнему байту файла:
    • seek(f, filesize(f));
  12. Запись новых данных в файл:
    • x.a := 11;
    • x.b := 22;
    • Write(f, x);
  13. Закрытие файла:
    • Close(f);
  14. Открытие файла 'test.dat' для чтения:
    • reset(f);
  15. Определение размера файла:
    • writeln('Filesize = ', filesize(f));
  16. Чтение и вывод на экран содержимого файла:
    • while not EOF(f) do begin
      • Read(f, x);
      • Write('(', x.a, ', ', x.b, ')'); end;
  17. Закрытие файла:
    • Close(f);
  18. Конец программы.
  19. Возможно, предполагается, что при работе с файлом ошибок не возникает, поэтому обработка ошибок не предусмотрена.
  20. Возможно, предполагается, что размер файла не изменяется при записи и чтении данных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы