Этот фрагмент не только вызывает ошибку времени выполнения, но и закрывает 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 (пока не в режиме отладки) выдает ошибку вне диапазона, но под моими часами я вижу, что переменные, которые я пытаюсь прочитать, существуют. Любая помощь очень ценится!