Ваше понимание ошибок проверки диапазона верно.Они возникают, когда вы обращаетесь к массиву за его пределами.Например:
type
TFixedArray = array [0..41] of Integer;
var
a: TFixedArray;
begin
a[42] := 1+2;//!! this is a range check error !!
end;
Или для динамического массива:
var
a: array of Integer;
begin
SetLength(a, 666);
a[665] := 12;//this is fine
a[666] := 42;//!! this is a range check error !!
end;
Я проиллюстрировал это с помощью присваивания, но чтение массива с индексом за пределами также даст диапазонerror.
Ошибка диапазона должна содержать адрес, по которому она возникла, и затем вы можете преобразовать ее в кодовое место с помощью файла карты.Еще лучше было бы, если бы вы использовали madExcept или какой-то другой инструмент.
ОБНОВЛЕНИЕ
По запросу Кена документация гласит, чтоОпция проверки диапазона зависит от следующих параметров:
В состоянии {$ R +} все выражения массива и индексации строк проверяются как находящиеся в заданных границах, и все присваивания скалярам и поддиапазонампеременные проверяются в пределах диапазона.