Причина ошибки проверки диапазона (Delphi)

Вот сокращенная версия некоторого кода, который вызывает как ошибку проверки диапазона, так и ошибку переполнения, если я включу эти директивы проверки компилятора. Я понимаю, почему это может привести к переполнению при умножении C1, вероятно, оно может превысить максимальное значение типа данных -. Но почему это также вызывает ошибку проверки диапазона -? Документация Delphi и другие сообщения о переполнении стека звучат так, будто ошибки проверки диапазона -обычно связаны с доступом к массиву, выходящим за пределы. Но я не обращаюсь к массиву в строке, которая, как он говорит, вызывает ошибку проверки диапазона -. Возможно, это связано с назначением param1? Но почему это должна быть проверка диапазона -, а не ошибка переполнения, если так?

const
  C1 = 44001;
  C2 = 17999;

function fxnName(..other params...; param1: Word): String;
var
  someByte: byte;
begin
  // some code
  // by now we're in a loop. the following line is where it breaks to in the debugger: 
  param1 := (someByte + param1) * C1 + C2;
  // more code
end;

Если это актуально,когда он разрывается на этой строке в отладчике, все значения выглядят так, как ожидалось, за исключением param1, который показывает «Необъявленный идентификатор :'param1'», когда я прошу Delphi оценить его.

9
задан Jessica Brown 25 July 2012 в 20:58
поделиться