Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-54089
Shumov D.
2003-03-05 16:03
2003.03.17
WinExec - передача параметров


1-54078
Seven
2003-03-05 12:27
2003.03.17
DLL


7-54340
BALU1111
2003-01-16 14:57
2003.03.17
Определитель номера


1-53961
Mister_Ru
2003-03-04 18:58
2003.03.17
Смена параметров шрифта в RichEdit


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский