Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
14-55294
iva
2002-05-08 11:17
2002.06.17
WinAPI + MSDN + MS SDK + MS DDK


1-55205
Sasha9
2002-06-05 11:45
2002.06.17
WinNT


1-55074
Stexen
2002-06-05 21:10
2002.06.17
ЗАДЕРЖКА


14-55266
kontra
2002-05-10 13:04
2002.06.17
Программирование на Delphi


3-55029
aleksei
2002-05-24 09:19
2002.06.17
По Grid,Text,Edit и т.п.




   Наверх