Ошибка 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.