Работа с файлами записей, ошибка 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.
Объяснение кода листинга программы
- Объявление типов данных:
- TType = record a, b: integer; end;
- TTypeFile = file of TType;
- Создание переменных:
- x: TType;
- i: integer;
- f: TTypeFile;
- Открытие файла 'test.dat' для записи (режим rewrite):
- Assign(f, 'test.dat');
- Запись 10-ти элементов в файл:
- for i := 1 to 10 do
begin
- x.a := i;
- x.b := 2 * i;
- Write(f, x); end;
- for i := 1 to 10 do
begin
- Закрытие файла:
- Close(f);
- Открытие файла 'test.dat' для чтения:
- reset(f);
- Определение размера файла:
- writeln('Filesize = ', filesize(f));
- Чтение и вывод на экран содержимого файла:
- while not EOF(f) do
begin
- Read(f, x);
- Write('(', x.a, ', ', x.b, ')'); end;
- while not EOF(f) do
begin
- Закрытие файла:
- Close(f);
- Открытие файла 'test.dat' для записи:
- reset(f);
- Переход к последнему байту файла:
- seek(f, filesize(f));
- Запись новых данных в файл:
- x.a := 11;
- x.b := 22;
- Write(f, x);
- Закрытие файла:
- Close(f);
- Открытие файла 'test.dat' для чтения:
- reset(f);
- Определение размера файла:
- writeln('Filesize = ', filesize(f));
- Чтение и вывод на экран содержимого файла:
- while not EOF(f) do
begin
- Read(f, x);
- Write('(', x.a, ', ', x.b, ')'); end;
- while not EOF(f) do
begin
- Закрытие файла:
- Close(f);
- Конец программы.
- Возможно, предполагается, что при работе с файлом ошибок не возникает, поэтому обработка ошибок не предусмотрена.
- Возможно, предполагается, что размер файла не изменяется при записи и чтении данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д