Главная страница
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.016 c
14-55266
kontra
2002-05-10 13:04
2002.06.17
Программирование на Delphi


3-55043
nedden
2002-05-23 16:41
2002.06.17
Тормозит ClientDataSet+DataSource+Grid


1-55191
Jen_Bond
2002-06-05 01:33
2002.06.17
Найти разницу


3-55036
Onio
2002-05-23 18:44
2002.06.17
Ошибка при импорте данных в Oracle


3-55028
Esipenko
2002-05-23 11:58
2002.06.17
Шифрование таблиц