Чтение после конца потока невозможно - 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.

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

  1. Объявление переменных и типа данных:
    • 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;
  2. Создание и заполнение файла:
    • 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);
  3. Чтение файла в массив:
    • reset(f);
    • i := 0;
    • while not eof(f) do begin inc(i); read(f, a[i]); end;
    • close(f); Обратите внимание, что код может вызвать ошибку, если попытаться прочитать за пределами данных, которые были записаны в файл. Это связано с тем, что в файле может быть некоторая информация, которую мы не видим или не знаем о ней. В этом случае, мы можем прочитать больше данных, чем было записано, что приведет к ошибке Чтение после конца потока невозможно.

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


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

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

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