Ошибка времени выполнения: Индекс находится вне границ массива - PascalABC.NET
Формулировка задачи:
Здравствуйте!
Столкнулся с ошибкой:
[Ошибка времени выполнения: Индекс находится вне границ массива]
Решение задачи: «Ошибка времени выполнения: Индекс находится вне границ массива»
textual
Листинг программы
var f: textfile; n, i: longint;
text: string; s: char;
begin
AssignFile(f,'file.txt');
reset(f);
while (not eof(f)) do
begin
readln(f,s);
inc(n);
text:=text+s
end;
close(f);
for i:=1 to n-1 do text[i]:=Chr(ord(text[i])+3);
write('RES: ',text);
end.
Объяснение кода листинга программы
- Объявляются переменные:
- f: textfile (объект для работы с файлом)
- n: longint (количество строк в файле)
- i: longint (номер текущей строки)
- text: string (буфер для хранения строк из файла)
- s: char (переменная для хранения текущей символа)
- Открывается файл 'file.txt' с помощью функции AssignFile
- Файл считывается построчно с помощью цикла while и функции readln до достижения конца файла (eof)
- Каждая строка добавляется в буфер text с помощью оператора конкатенации (+=)
- Файл закрывается с помощью функции close
- Запускается цикл for для обработки каждого символа в буфере text, начиная с 1-го и заканчивая n-1 (так как последний символ уже обработан в цикле while)
- В каждой итерации цикла for к символу добавляется 3 с помощью функции ord и оператора конкатенации (+=)
- Результат выводится на экран с помощью функции write
- Код завершается