Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

EIntOverflow :???: [D5, Win95/98, WinXP]


Бадян ©   (2002-06-05 11:47:00) 

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

Простите, что на 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 14:39:00) [1]

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


MAxiMum   (2002-06-05 14:25:00) [2]

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


Внук   (2002-06-05 14:12:00) [3]

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

...
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;


Внук   (2002-06-05 13:59:00) [4]

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


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

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


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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо