Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
2-1129176571
Alex77777
2005-10-13 08:09
2005.11.06
Как вызвать форму TFrame


2-1129301080
Qand
2005-10-14 18:44
2005.11.06
Как в PageControl сделать невидимой одну из страниц?


4-1125583313
AngelFire
2005-09-01 18:01
2005.11.06
Получение уровня привелегий процесса


2-1129043862
psa247
2005-10-11 19:17
2005.11.06
Версия Windows


2-1129346563
antoxa2005
2005-10-15 07:22
2005.11.06
Подскажите, если кто знает. Как добавить записи в таблицуБД MySQL





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