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

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

Непонятно отчего ошибка раз... неясно почему она не обрабатывается :( [D5, Win95/98]


$Hic0 ©   (2002-03-26 16:24:00) 

Есть кусок кода

procedure TForm1.Timer4Timer(Sender: TObject);
var tmpX : double;
i: byte;
begin
//-------Вывод графика отклонения от целевого угла
With Series3 do
begin
try
tmpX:=XValues.Last-XValues[0];
AddXY(XValues.Last+tmpX,Round(180*f/Pi));
except on EOverflow do Begin
tmpX:=0;
Replace;
Series3.Clear;
For i:=0 to 30 do Series3.AddXY(i,Random(20));
end;
end;
Delete(0);

end;
//-------------------------------------------------
end;

Т.е. выводится график, значения которого пересчитываются при каждом обращении к таймеру... сначала все идет хорошо, но со временем вылетает ошибка переполнения... переполнения чего непонятно :( Накопления как видите здесь нет :( Самое интересно интераптер останавливая программу не становится на ту строчку кода которая вызвала ошибку хотя обычно он, как вы знаете, такие вещи делает :). Ошибка точно в этому куске, т.к. закоментировав процедуру все работает как надо... это все хорошо. Теперь когда я собираюсь обрабатывать ее руками и как видите обрабатываю присвайивая всем переменным по нулям для начала. Процедура Replace занимается как раз этим. Очищаю полностью Сериес и заполняя его новыми случайными значениями. Усе равно, такое ощущение что он этого куска просто не видет. В пошагоовом режиме, отладчика поцедура просто пропускается :(
Может кто сталкивался? В чем собака зарыта? :)


aus   (2002-03-26 20:36:00) [1]

>а до тех пор возникающие ошибки не обрабатываются трай-ексептом

Обрабатываются, просто тебе сообщение выдается во время отладки, которое можно отключить в Project-Options....


$hiC0   (2002-03-26 19:37:00) [2]

Ребят, самое интересное сказать? :)
Я ведь и раньше с такой траблой сталкивался. Обработчик начинает работать когда чел одельно из под фоточек запускает ехешник, а до тех пор возникающие ошибки не обрабатываются трай-ексептом :)
Мысль возникла запустить отдельно от Дельфей свей хозяйство :)) Заработал обработчиак, как миленький :) Спаибо ребята!
:)


oomneeq   (2002-03-26 18:49:00) [3]

Значит там не EOverflow а какойто другой эксепщн
сделай так:

except on E:EOverflow do Begin
tmpX:=0;
Replace;
Series3.Clear;
For i:=0 to 30 do Series3.AddXY(i,Random(20));

end;
on E:Exception do
begin
Showmessage(E.Message)
end;




$hiC0   (2002-03-26 18:28:00) [4]

f - значение угла в радианах, я все проверил перепроверил :) изменение от -1.57 до +1.57. Т.е. От -90 до +90 говоря человечееским языком :)).
Eug201 >
Могу предположить, что ошибка возникает внутри on EOverflow, или этого не может быть?

Вроде нет не может. Потому что кусок

Series3.Clear;
For i:=0 to 30 do Series3.AddXY(i,Random(20));

выполняется программой без ошибок в самом начале при событии OnCreat основной формы.
Процедура Replace; также очень часто вызывается из основной программы и она не глючная, там просто всем переменным присваются нулевые значения.... надо было ее Init назвать :)


oomneeq > а f - чо такое?
oomneeq > при его запредельных значениях запросто можно получито oomneeq > оверфлоу

Даже если допустить что это так, так какого ..... спрашивается не срабатывает обработчик??? Может где галочки какие надо выставить в настройках компилятора? Тьфу-ты...
ПОМОГИТЕ ПЛЗ... зашиваюсь, встал перед этой проблемой как честно слово баран какой-то :(((



Eug201   (2002-03-26 18:22:00) [5]

Могу предположить, что ошибка возникает внутри on EOverflow, или этого не может быть?


oomneeq   (2002-03-26 18:21:00) [6]

>AddXY(XValues.Last+tmpX,Round(180* f/Pi));

а f- чо такое?
при его запредельных значениях запросто можно получито оверфлоу


$hiC0   (2002-03-26 18:13:00) [7]

Ну же люди, в чем Баг? :(


$hiC0   (2002-03-26 17:15:00) [8]

Project Control.exe raised exception class Eoverflow with message "Floating point overflow". Process stopped. Use Step or Run to continue.

Буквально вот-так :)


Johnmen   (2002-03-26 17:08:00) [9]

Интересно все же содержание сообщения об ошибке...


$hiC0   (2002-03-26 16:57:00) [10]

Так что никто не знает что-ли? :)) Человки, будьте милосердны, хотя-бы предположите что-нить :) Я вам спасибо скажу :)


Наверх

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