Этот фрагмент не только вызывает ошибку времени выполнения, но и закрывает FPC, если я запускаю его с помощью отладчика.
procedure sortplayersbyscore(var vAux:tplayers);
procedure swap(var a:trplayers;var b:trplayers);
var
rAux:trplayers;
begin
rAux:=a;
a:=b;
b:=rAux;
end;
var
i,j:integer;
sorted:boolean;
begin
vAux:=playersarray;
i:=1;
sorted:=false;
while (i <= MAXPLAYERS -1) and not sorted do
begin
j:=1;
sorted:=true;
while (j <= MAXPLAYERS -i) do
begin
if (vAux[j].score < vAux[j+1].score) then
begin
swap(vAux[j],vAux[j+1]);
sorted:=false;
end;
inc(j);
end;
inc(i);
end;
end;
Код сам по себе является частью действительно большого исходного файла, я могу опубликовать все это, но ответственность за ошибку - это просто куча строк. Отладчик завершается в строке:
swap(vAux[j],vAux[j+1]);
tplayers - это просто тип, определенный как массив записей, которые содержат оценку (целое число) среди множества других переменных. trplayers - это тип вышеупомянутых записей. Я в полной растерянности; FPC (хотя и не в режиме отладки) выдает ошибку вне диапазона, но под своими наблюдениями я вижу, что переменные, которые я пытаюсь прочитать, существуют. Любая помощь очень ценится!