Вниз
Скачать: CL | DM;

Как вызвать из программы runtime error 201 (Range check error) ?   Найти похожие ветки 

← →
Альф ©   (2003-03-05 11:38) [0]

Но без использования ERangeError.


← →
Anatoly Podgoretsky ©   (2003-03-05 11:43) [1]

N := MaxInt
N := N + 1


← →
Palladin ©   (2003-03-05 12:02) [2]


> Anatoly Podgoretsky © (05.03.03 11:43)

ну и будет N=0...

> Альф © (05.03.03 11:38)

во первых галку поставь
Project/Options/Compiler/Range Chacking

var
REAr:Array [0..1] of byte;
REIdx:byte;

...
REIdx:=2;
EREAr[REIdx]:=0;


← →
Anatoly Podgoretsky ©   (2003-03-05 12:13) [3]

Palladin © (05.03.03 12:02)
С какой это стати прибавление единицы к %7FFFFFFF волшебным образом превращает в ноль?


← →
Jel ©   (2003-03-05 12:21) [4]


> Anatoly Podgoretsky © (05.03.03 11:43)
> N := MaxInt
> N := N + 1


Забавно, но у меня этот код не вызывает Range Check Error а выдает -2147483648. При этом {$R+} присутствует.


← →
Palladin ©   (2003-03-05 12:23) [5]


> Anatoly Podgoretsky © (05.03.03 12:13)

поторопился
не 0, а -(MaxInt+1)


← →
Palladin ©   (2003-03-05 12:29) [6]


> Jel © (05.03.03 12:21)

операции над числами никогда не проверялись на Range


← →
Anatoly Podgoretsky ©   (2003-03-05 12:41) [7]

Jel © (05.03.03 12:21)
Может я ошибся, перепутал с overflow, тогда Palladin © (05.03.03 12:02)


← →
Anatoly Podgoretsky ©   (2003-03-05 12:45) [8]

Хотя если тип объявлен как = 1..100 то должно давать, видимо для MinInt..MaxInt это не отрабатывает, поскольку нет значения MaxInt + 1, происходит просто переполнение.


← →
Palladin ©   (2003-03-05 12:53) [9]

да... когда диапазон задан то выдает...
хоть я и не ковырялся во внутренных особенностях работы компилятора с типами переменных, мне всетаки кажется объявление integer кардинально отличается от подобного обявления диапазонов... и работа с ним соотвесно тоже отличается


← →
Anatoly Podgoretsky ©   (2003-03-05 13:02) [10]

Palladin © (05.03.03 12:53)
Не отличается, это предопределенный диапазон, просто невозможно представить число на единицу больше в связи с ограничением разрядности регистров


← →
Альф ©   (2003-03-05 14:36) [11]

Спасибо - вариант с {$r+} и массивами уже рассматривался :)
Думал есть более оригинальные методы
Согласитесь: raise смотриться куда лучше :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.017 c
7-54356
SJ-79
2003-01-08 13:19
2003.03.17
Программная регулировка скорости LPT порта


1-53999
udet
2003-03-06 15:07
2003.03.17
создание файла


6-54152
WingGod
2003-01-24 02:45
2003.03.17
События...


3-53923
lamer_new
2003-02-26 11:30
2003.03.17
Привет помогите написать запрос !


9-53835
VitGun
2002-10-17 18:10
2003.03.17
GLScene




   Наверх