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

Вниз

EIntOverflow :???:   Найти похожие ветки 

 
Бадян ©   (2002-06-05 11:47) [0]

Привет, многоуважаемые.

Простите, что на C.

void __fastcall TForm1::DigitSpeedButtonClick(TObject *Sender)
{
__int32 a=0xFFFFFF;

try
{
a = a*0xFFFF;
}
catch (EIntOverflow &e)
{
MessageBox(NULL, "IntOverflow", "", MB_OK);
}
}

Вот так не работает, однако. Чем лечить? На дельфях можно тыкнуть {$Q+}. Дык все равно не работает. Почему не выскакивает экцепшин? Другие ведь выскакивають (EDivByZero).

Заранее благодарю.


 
Игорь Шевченко ©   (2002-06-05 12:02) [1]

Посмотрите в отладчике, какие флажки выставляются после операции


 
Бадян ©   (2002-06-05 13:10) [2]

Если написать a = a*a;
OF, как миленький, устанавливается.
Но уст. или не уст. OF нет никакой разницы. EIntOverflow все равно не вылезает. Хоть клаву грызи...


 
Игорь Шевченко ©   (2002-06-05 13:21) [3]

a*((__int32)0xFFFF) что получится ? :-)


 
Бадян ©   (2002-06-05 13:40) [4]

Мда...
Но все же?


 
Внук ©   (2002-06-05 13:59) [5]

Если Вам действительно нужно получить этот Exception, то это не так просто :)
Но, сдается мне, что Вам нужен ERangeError (см. его описание в Help)


 
Внук ©   (2002-06-05 14:12) [6]

Но, если хотите, то вот:

...
uses Math;

...

procedure TForm1.Button1Click(Sender: TObject);
var Params:array[1..4] of Integer;
Res:Integer;
begin
{$Q+}
{$R-}
Res:=0;
Params[1]:=$7FFF0000;
Params[2]:=$FFF0;
Params[3]:=$F;
Params[4]:=$F;
try
Res:=SumInt(Params);
except
on E:EIntOverflow do ShowMessage("EIntOverflow");
on E:Exception do ShowMessage("Another Exception");
end;
ShowMessage(IntToStr(Res));
{$Q-}
end;


 
MAxiMum ©   (2002-06-05 14:25) [7]

Может компилятор выкинул операцию с переменной A в следствии ее несипользованности.


 
Внук ©   (2002-06-05 14:39) [8]

MAxiMum © (05.06.02 14:25)
Нет, просто там происходит ERangeError, если {$R+} включено, конечно :)



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
1-55103
Andrew22
2002-06-06 09:03
2002.06.17
Курсор


4-55372
Saint_Byte
2002-04-16 15:33
2002.06.17
Файловые события


1-55169
Karlush
2002-06-04 11:27
2002.06.17
Окна диалога


1-55192
mrgrin
2002-06-05 02:38
2002.06.17
Как получить выбранный элемент ComboBox?


3-54981
Proton
2002-05-22 07:56
2002.06.17
Выборка первых 10 записей