Главная страница
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.021 c
3-53860
Rustiik
2003-02-27 10:52
2003.03.17
Архивация базы из проги


1-54010
Андрусь
2003-03-05 18:08
2003.03.17
Как получить из такой строки YYYY_MM_DD_HN дату


3-53953
anton2v
2003-02-26 12:08
2003.03.17
CREATE TABLE ms.dbf (price number(18,2))


4-54371
Артём К.
2002-12-24 05:05
2003.03.17
Версия Windows


8-54123
Alex
2002-12-04 12:39
2003.03.17
Графика в Stringgrid