Главная страница
    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.035 c
2-1128972479
Zut
2005-10-10 23:27
2005.11.06
получение данных из Access


14-1129379058
race1
2005-10-15 16:24
2005.11.06
Железо


1-1129650168
Рагим
2005-10-18 19:42
2005.11.06
Как получить данные из listbox который находится в dll


14-1128783117
ReStudent
2005-10-08 18:51
2005.11.06
Бинарное дерево


1-1129098274
Антоныч
2005-10-12 10:24
2005.11.06
Перестала работать функция дополнения класса





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