![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с Invalid floating point operation!! [D7, WinXP]
Smarty © (2005-10-23 14:59:00)Народ!
Подскажите плиз что я делаю не так?
имеем переменные:
MaxRowId:integer;
r:double;
При попытке выполнить: r:=MaxRowId/2 выскакивает ошибка "Invalid floating point operation". Что я делаю не так?
причем если перед этим вычислением постваить ShowMessage(MaxRowId) все работает.
umbra (2005-10-24 12:16:00) [1]
> Invalid floating point operation
А у меня такое часто случалось на D7, когда с датами работал и брейкпойнты в процедурах обработки дат ставил. Ставишь точку прерывания - получаешь исключение, убираешь - все работате как часы.
han_malign (2005-10-24 12:13:00) [2]З.З.Ы. Причем глюк всегда именно при делении целых с приведением к плаващей точке...
han_malign (2005-10-24 12:11:00) [3]Были такие приколы, WinAPI в некоторых местах(чаще в вызовах kernel32) изменяет флаги сопроцессора - Delphi где может это фиксит(SafeLoadLibrary например), но в основном полагается на эксклюзивное владение сопроцессором(и глобально неизменное состояние), что иногда приводит к некоректной работе System._FSafeDivide.
Спасаетasm FINIT end;перед делением...
З.Ы. Глюк идет еще со времен BP7.0/D1 под DPMI.
Smarty (2005-10-23 18:14:00) [4]:) я тоже был учень удивлен такому повороту событий, однако в MaxRowId всегда находилось нормальное ненулевое значение, да и к простому делению на 2 особо не придерешься. Может Delphi глюканул? В любом случае всем спасибо! А я обошелся без этого деления :)
Юрий Зотов (2005-10-23 17:30:00) [5]
procedure TForm1.FormCreate(Sender: TObject);
var
MaxRowId: integer;
R: double;
begin
MaxRowId := Handle;
R := MaxRowId / 2;
ShowMessage(FloatToStr(R))
end;
И все работает. Значит, ответ на вопрос "Что я делаю не так?" нужно искать в другом месте кода.
Loginov Dmitry (2005-10-23 17:04:00) [6]Ведь ясно же написано: "Invalid floating point operation". Сделай соответствующие выводы.