Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: 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 вся ветка

Текущий архив: 2003.03.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
3-53867
MsGuns
2003-02-24 21:12
2003.03.17
Еще раз о триггере


14-54213
Programist
2003-03-03 12:20
2003.03.17
протоколы ICQ и Odigo


1-54005
Ag2002
2003-03-04 18:19
2003.03.17
Прозрачность


6-54130
oleg_poligon
2003-01-22 19:43
2003.03.17
Сокеты


14-54289
hatchy
2003-02-27 10:56
2003.03.17
Музыка или звуки......