Главная страница
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.02 c
3-53880
Studentas
2003-02-25 08:01
2003.03.17
SQL ?


1-54109
kofman
2003-03-04 23:14
2003.03.17
Как загрузить картинку в TShape?


3-53865
vdv
2003-02-24 21:19
2003.03.17
Как некоторым компонентам изменить свойства...


14-54227
Николай Быков
2003-03-02 20:30
2003.03.17
Эх, как же я вам, взрослым, завидую


14-54293
Артём В.
2003-02-28 22:17
2003.03.17
ToolBar как в Office XP