Почему программа пишет "Индекс находился вне границ массива"

Это программа должна прочитать указанный файл, найти строчки 'XYZ' и посчитать их максимальную длину. Например: XYZZZXYZXYZXYZ Ответ, максимальная длинна 'XYZ' = 3

var
  f: text;
  a: string;
  schot, max, i, perem: integer;

begin
  assign(f, 'C:\Users\Даниил\Desktop\Разье ЕГЭ (Информатика)\888.txt');
  reset(f);
  read(f, a);
  close(f);
  schot := 0;
  for i := 1 to Length(a) do 
  begin
    if (Concat(a[i], a[i + 1], a[i + 2]) = 'XYZ') and (a[i + 3] = 'X') then
    begin
      schot := schot + 1;
      if perem < schot then
        perem := schot;
    end
    else
    if (Concat(a[i], a[i + 1], a[i + 2]) = 'XYZ') and (a[i + 3] <> 'X') then
    begin
      schot := 0;
      if max < perem then
        max := perem;
    end;
    if max < perem then
      max := perem;
  end;
  writeln(max);
end.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Aziz Umarov

Как вы думаете когда i дойдет до Length(a) выхода за границы не будет?

Concat(a[i], a[i + 1], a[i + 2]

сделайте цикл до Length(a) - 3 чтоб не было выхода. А с логикой разбирайтесь

→ Ссылка