Ошибка access violation при записи в массив строк

По какой-то причине, на второй итерации цикла Repeat until при попытке записи буквы в элемент массива выскакивает знаменитая ошибка. Индекс массива стоит на единице(то есть это нужное место). По какой причине это может быть? P S Задание состоит в том, чтобы переформатировать существующий текстовый файл игнорирую разделения строк так, чтобы одна строка содержала либо строку, оканчивающуюся точкой, либо строку в которой 60 символов

program lab8;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

var
  InputFile: TextFile;
  S,TempStr: string;
  ArrOfStrings: array of string;
  i, LengthStr, CheckPos: integer;

Procedure AddNewStringInArr(var ArrOfStringsProc: array of string;
  CheckPosProc: integer; StringProc: string; var iProc: integer);
var
  j: integer;
begin
  for j := 1 to CheckPosProc do
  begin
    ArrOfStringsProc[iProc] := ArrOfStringsProc[iProc] + StringProc[j];
  end;
  iProc := iProc + 1;
end;

begin
  AssignFile(InputFile,
    'C:\Users\User\Desktop\ОАИП\Лабы 2 сем\лаба 8.1\Input.txt');
  Reset(InputFile);

  SetLength(ArrOfStrings, 1);
  i := 0;
  TempStr:='';
  while (not EOF(InputFile)) do
  begin
    Readln(InputFile, S);
    S:=S+TempStr;
    CheckPos := pos('.', S);

    if CheckPos <> 0 then
    begin
      repeat
        AddNewStringInArr(ArrOfStrings, CheckPos, S, i);
        Delete(S, 1, CheckPos+1);
        CheckPos := pos('.', S);
      until CheckPos = 0

    end;
    while Length(S)>=60 do
    begin
      AddNewStringInArr(ArrOfStrings, 60, S, i);
      Delete(S, 1, 60);
    end;
    TempStr:=S;

  end;
  Rewrite(InputFile);
  while i>=0 do
  begin
    Writeln(InputFile,ArrOfStrings[i]);
    i:=i-1;
  end;
  CloseFile(InputFile);
end.

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