Работа с файлами записей, ошибка 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);
- Конец программы.
- Возможно, предполагается, что при работе с файлом ошибок не возникает, поэтому обработка ошибок не предусмотрена.
- Возможно, предполагается, что размер файла не изменяется при записи и чтении данных.