Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.08;
Скачать: CL | DM;

Вниз

Непонятно отчего ошибка раз... неясно почему она не обрабатывается :(   Найти похожие ветки 

 
$Hic0 ©   (2002-03-26 16:24) [0]

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

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 занимается как раз этим. Очищаю полностью Сериес и заполняя его новыми случайными значениями. Усе равно, такое ощущение что он этого куска просто не видет. В пошагоовом режиме, отладчика поцедура просто пропускается :(
Может кто сталкивался? В чем собака зарыта? :)


 
$hiC0 ©   (2002-03-26 16:57) [1]

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


 
Johnmen ©   (2002-03-26 17:08) [2]

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


 
$hiC0 ©   (2002-03-26 17:15) [3]

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

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


 
$hiC0 ©   (2002-03-26 18:13) [4]

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


 
oomneeq ©   (2002-03-26 18:21) [5]

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

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


 
Eug201 ©   (2002-03-26 18:22) [6]

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


 
$hiC0 ©   (2002-03-26 18:28) [7]

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 > оверфлоу

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




 
oomneeq ©   (2002-03-26 18:49) [8]

Значит там не 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 19:37) [9]

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


 
aus ©   (2002-03-26 20:36) [10]

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

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



Страницы: 1 вся ветка

Текущий архив: 2002.04.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
3-22571
dymka
2002-03-16 13:11
2002.04.08
Как сделать правильно вызов функции в IB?


4-22894
BDRON
2002-02-05 21:17
2002.04.08
Запустить две программы подряд.


4-22872
Turalyon
2002-02-06 13:41
2002.04.08
Как получить handle активного окна


1-22691
Grishin
2002-03-26 13:22
2002.04.08
В чем проблема?


7-22847
Херувим
2001-12-29 13:29
2002.04.08
Как определить номер железа