2016-10-31 4 views
-2

Эй, ребята, у меня есть два вопроса.
1) Как переменная действовать, когда (например, думаю, что число MaxValue составляет + - 100)Проверьте, достигли ли переменные максимальное значение - behauvior

sum : integer; 
sum+=200; 

и сумма достигает целого MaxValue. Вот следующий вопрос, связанный с
2) Есть ли способ в дельфи, чтобы поймать, когда эта ситуация имеет место и что-то еще что-то сделать, и делать это со знакомыми, как попробуйте, кроме? Или если не может быть способ сделать это, если тогда?

+2

На каком языке этот код? Вы действительно используете '+ ='? –

+1

См. Также [Причина ошибки проверки диапазона (Delphi)] (http://stackoverflow.com/q/11658519/576719). Ошибка [Ошибка проверки диапазона] (http://docwiki.embarcadero.com/RADStudio/en/Compiling#Run.E2.80.91time_Errors_Options) также может быть выбрана в зависимости от размера типов переменных, участвующих в арифметической операции. –

+0

Да, это не код Delphi ... –

ответ

0

Чтобы получить максимум и мин диапазон для Integer типа вы можете использовать следующий код:

var 
    myMin, myMax: Integer; 
begin 
    myMin := Low(Integer); 
    myMax := High(Integer); 
end; 

EIntOverflow возбуждается исключение:

для целочисленных вычислений, результаты которых слишком большой, чтобы соответствовать в выделенном регистре .

Если вы пробовали:

myMax := High(Integer) + 1; 

значение переключится на значение Low(Integer)

P.S. В Delphi отсутствует оператор +=.

+0

Спасибо, что вы мне очень помогли :). Еще один вопрос, который я прочитал на этом сайте с Exception: > Примечание. В коде Delphi EIntOverflow создается только в том случае, если включена проверка переполнения. Чтобы включить проверку переполнения, включите директиву $ Q + в исходный код проекта или выберите «Проект | Параметры», выберите вкладку «Компилятор» и установите флажок «Проверка переполнения» в диалоговом окне. Если я скомпилирую его в exe и включи на другой компьютер, он будет возбуждать исключение? – Czcibor

+0

Для получения дополнительной информации об этой директиве? Это * компилятор * директива. Он применяется во время компиляции, поэтому нет механизма, чтобы «включить его на другом компьютере». Он включен в компилятор, где вы создаете свой EXE-файл. Копирование исполняемого файла в другом месте не изменит поведение проверки переполнения. –

 Смежные вопросы

  • Нет связанных вопросов^_^