Чтение после конца потока невозможно - PascalABC.NET (126438)
Формулировка задачи:
Файл для чтения создан в Паскале.
Код ошибки:
Решение задачи: «Чтение после конца потока невозможно»
textual
Листинг программы
type base = record n1, n2: string[15]; tel: string[4]; d, m: byte; y: integer; end; var r: base; a: array [1..10] of base; f: file of base; i: integer; begin assign(f, 'in.dat'); rewrite(f); // создаем новый файл for i := 1 to 10 do // заполняем его 10 значениями "от балды", чтобы был понятен принцип begin r.d := i; r.m := i; r.y := i; // тут тестовые значения r.n1 := 'start'; r.n2 := 'finish'; r.tel := '3234'; write(f, r); // пишем структуру в файл end; close(f); reset(f); // переоткрываем файл уже для чтения i := 0; while not eof(f) do // и читаем содержимое в массив a begin inc(i); read(f, a[i]); // в этой строке не показывает никакой ошибки end; close(f); end.
Объяснение кода листинга программы
- Объявление переменных и типа данных:
- base = record
- n1, n2: string[15];
- tel: string[4];
- d, m: byte;
- y: integer; end;
- var r: base;
- var a: array [1..10] of base;
- var f: file of base;
- var i: integer;
- Создание и заполнение файла:
- assign(f, 'in.dat');
- rewrite(f);
- for i := 1 to 10 do begin r.d := i; r.m := i; r.y := i; r.n1 := 'start'; r.n2 := 'finish'; r.tel := '3234'; write(f, r); end;
- close(f);
- Чтение файла в массив:
- reset(f);
- i := 0;
- while not eof(f) do begin inc(i); read(f, a[i]); end;
- close(f);
Обратите внимание, что код может вызвать ошибку, если попытаться прочитать за пределами данных, которые были записаны в файл. Это связано с тем, что в файле может быть некоторая информация, которую мы не видим или не знаем о ней. В этом случае, мы можем прочитать больше данных, чем было записано, что приведет к ошибке
Чтение после конца потока невозможно
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д