|
#1
|
|||
|
|||
Range check error
На второй строке появляется ошибка:
Код:
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
|
||||
|
||||
Синтаксис Delphi
Цитата:
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. Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#6
|
|||
|
|||
Цитата:
Спасибо за объяснения - не знал про лимит диапазона для in. |