![]() |
|
|
#1
|
|||
|
|||
|
На второй строке появляется ошибка:
Код:
if IsNumeric(crS.dbnum) and IsNumeric(dbLast) and IsNumeric(dm.cdsClaimDb1.AsString) then if ( StrToInt(crS.dbNum) in [dm.cdsClaimDb1.AsInteger..StrToInt(dbLast)]) then // тут |
|
#2
|
||||
|
||||
|
Такая ошибка возникает когда выходишь за пределы массива или обрашаешься к элементу за пределами массива...
|
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
Попробуй в настройках проекта отключить эту проверку и прогнать выполнение. Иногда это дело глючит.
|
|
#5
|
||||
|
||||
|
Цитата:
![]() MAcK Ошибка - в неправильном использовании оператора in По правилам, он должен использоваться для проверки вхождения элемента в к.л. множество, а не для проверки вхождения числа в диапазон. Тебе следует переписать второе условие: Код:
if ( StrToInt(crS.dbNum) >= dm.cdsClaimDb1.AsInteger ) and ( StrToInt(crS.dbNum) <= StrToInt(dbLast) ) then Заметка на счёт множества : оно не может содержать более 255 элементов, например этот код нормально выполняется: Код:
var a,b,c:integer;
begin
a:= 50; b:=10; c:=100;
if a in [b..c] then Writeln('In')
else Writeln('Out');
Readln;
end.А вот этот вызовет ошибку "Range check error" Код:
var a,b,c:integer;
begin
a:= 500; b:=100; c:=1000;
if a in [b..c] then Writeln('In')
else Writeln('Out');
Readln;
end. |
|
#6
|
|||
|
|||
|
Цитата:
Спасибо за объяснения - не знал про лимит диапазона для in. |