![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятно отчего ошибка раз... неясно почему она не обрабатывается :( [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]Так что никто не знает что-ли? :)) Человки, будьте милосердны, хотя-бы предположите что-нить :) Я вам спасибо скажу :)