Форум: "Основная";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
ВнизКак вызвать из программы 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c