Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Отключение проверки на переполнение   Найти похожие ветки 

 
Vladimir88   (2005-10-16 16:14) [0]

Как временно отключить проверку на переполнение переменной, например у меня есть переменная a:Byte; надо чтобы при а=255, a+1 должно быть равно 0.


 
Lamer@fools.ua ©   (2005-10-16 16:33) [1]

{$OVERFLOWCHECKS OFF}

Либо в Project Options > Compiler:
[ ] Overflow checking


 
Германн ©   (2005-10-16 17:02) [2]

Делай Inc(a). В ней проверка на переполнение не делается.


 
Lamer@fools.ua ©   (2005-10-16 17:14) [3]

>>Германн ©   (16.10.05 17:02) [2]

Делается. RTFM.


 
Германн ©   (2005-10-16 17:28) [4]

2 Lamer@fools.ua ©   (16.10.05 17:14) [3]

> Делается. RTFM.


Хм. В справке этого не написано.


 
Anatoly Podgoretsky ©   (2005-10-16 19:46) [5]

will cause an EIntOverFlow exception to be raised if range and overflow checking are on. In Delphi 1.0, this did not raise an exception.


 
Германн ©   (2005-10-16 20:03) [6]

2 Anatoly Podgoretsky ©   (16.10.05 19:46) [5]

Так-то оно так, но в сабже:
> a:Byte
, а в справке Shortint.


 
Кефир87 ©   (2005-10-16 21:17) [7]

asm
inc a
end;


Может так?


 
Vladimir88   (2005-10-16 22:24) [8]

{$OVERFLOWCHECKS OFF}
да чёта не помогает это всё равно пишет IntegerOwerflow.


 
palva ©   (2005-10-16 23:19) [9]

А можно привести ваши операторы, дающие исключение. У меня вот так работает безо всяких $OVERFLOWCHECKS OFF

{$APPTYPE CONSOLE}
uses SysUtils;
var
 b: Byte;
begin
 b := 255;
 b := b + 1;
 WriteLn(b); // 0
end.


 
palva ©   (2005-10-16 23:28) [10]

Удалось добиться исключения при явном включении контроля (по умолчанию он выключен). И переменная должна быть Integer.

{$APPTYPE CONSOLE}
{$OVERFLOWCHECKS ON}
uses SysUtils;
var
 b: Integer;
begin
 b := $7FFFFFFF;
 b := b + 1;
 WriteLn(b); // Сюда не доходит
end.

Байтовая переменная в аналогичном коде не контролируется (исключения не происходит).


 
Германн ©   (2005-10-17 01:30) [11]


> Vladimir88   (16.10.05 22:24) [8]
>
> {$OVERFLOWCHECKS OFF}
> да чёта не помогает это всё равно пишет IntegerOwerflow.
>

Для полной ясности ответь - ты запускаешь программу из Дельфи(Run) или из EXE-шника?


 
Vladimir88   (2005-10-17 09:08) [12]

{$OVERFLOWCHECKS OFF}
  for j:=0 to Len-1 do
   inc(cs,ArrBody[j]);
  {$OVERFLOWCHECKS ON}

Запускаю из Delphi.


 
palva ©   (2005-10-17 13:15) [13]

IntegerOverflow значит результат приращения больше чем $7FFFFFFF
а если бы переполнялось значение Byte, то было бы RangeCheck, ИМХО.


 
Leonid Troyanovsky ©   (2005-10-17 14:01) [14]


> palva ©   (17.10.05 13:15) [13]
> IntegerOverflow значит результат приращения больше чем $7FFFFFFF


IMHO, зависит от прибавляемого.
Т.е., если это 1 - т.е., константа типа Integer, то получим rang check error,
а если это константа типа Byte (или, скажем, операции типа inc), то -
Integer overflow. Конечно же, при {R+,Q+}.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-10-17 14:15) [15]


> Vladimir88   (17.10.05 09:08) [12]
> {$OVERFLOWCHECKS OFF}
>   for j:=0 to Len-1 do
>    inc(cs,ArrBody[j]);
>   {$OVERFLOWCHECKS ON}


Локальный диапазон {local scope} стоило бы, IMHO, применять
к некоему блоку, т.е., например:

{$R+,Q+}
procedure x..;
..
end;
{$R-,Q-}

Ну, и стоило б также отключить подобное после отладки.

--
Regards, LVT.



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.036 c
14-1129402421
Карелин Артем
2005-10-15 22:53
2005.11.06
Тихо сам с собой комп ведет разговор...


4-1125771215
GuAV
2005-09-03 22:13
2005.11.06
Сшная структура из MSDN - как понимать такие поля ?


5-1107521160
Alex01
2005-02-04 15:46
2005.11.06
Edit


4-1125120110
ndn
2005-08-27 09:21
2005.11.06
Принтер замедляет печать


2-1129151326
Megabyte
2005-10-13 01:08
2005.11.06
SQL-инструкция для создания нового usera





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский