Модуль PascalABC.NET

Здравствуйте. Я делаю модуль по файлам.
Подскажите почему не считается сумма элементов в массиве и когда я ввожу i элемент, мне всё время пишется file of System.Double

procedure readfil(var f:file of real);
  var
    m: array [1..1000] of real;
    i,n: integer;
    a: real;
    const name2 = 'massiv.dat';
  begin
    a := 0;
    assign (f, name2);
    reset(f);
  while not eof(f) do begin
    read(f, m[i]);
    a := a + m[i];
  end;
  writeln('Сумма элементов массива = ', a);
  close(f);
  end;

Это ввод в файл, а сверху вывод с файла.

procedure openfil(var f:file of real);
  var
    m: array [1..1000] of real;
    n,i: integer;
    const name2 = 'massiv.dat';
  begin
  assign (f, name2);
  rewrite(f);
  writeln('Введите количество элементов');
  readln(n);
  for i:= 1 to n do begin
    writeln('Введите ', i, ' элемент');
    readln(m[i]);
    Println(f, m[i]);
  end;
  close(f);
  end;

Это я поправил, помогите пожалуйста с суммой элементов

Как именно, что выводит?

Я уже решил проблему, спасибо)

Если вы решили проблему, напишите, как это сделали. Это может быть остальным пользователям форума.

Проблему я не решил, просто заменил задание на другое, скорее всего какой-то баг

неплохо сначала инициализировать i, например i:=1;

Не логичнее в процедуры передавать имя файла, вместо переменной файлового типа?

модуль ето штука которая через uses подключается или модуль в сенсе контрольная работа? :wink:

1 лайк

да не то, чтобы “неплохо” - это ОБЯЗАТЕЛЬНО НУЖНО.
локальные переменные ничем не иницилизируются, в стеке может быть любой мусор, это неминуемо приведёт к ошибке.

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