Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2012, 11:00   #1
dimavit
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 28
По умолчанию floating point invalid operation

Имитация движения объекта (точка радиусом 3 пиксела) производится следующим образом: пересчитываются его координаты, на месте его текущего положения перерисовывается фон, сохраненный ранее в его свойстве Bmp, объект отрисовывается в точке с новыми координатами.
Однако, при этом иногда возникает ошибка: floating point invalid operation вот в этом месте программы:

Код:
Form1.PaintBox1.Canvas.Draw(X-3, Y-3, Bmp); //восстанавливаем фон,          //извлекая его из свойства Bmp и помещая в текущее месторасположение объекта
С чем может быть связана данная ошибка (повторюсь, что возникает она не всегда)?

Необходимо отметить, что количество объектов, которые отрисовываются, увеличивается за счет создания все новых объектов в цикле. И кроме вышеуказанной ошибки возникает также и другая (а именно project raised exception class EOutOfResources with message 'Out of system resources') в момент отрисовки объекта:

Код:
      Form1.PaintBox1.Canvas.Pen.Color := clRed;
      Form1.PaintBox1.Canvas.Brush.Color:=clRed;
      Form1.PaintBox1.Canvas.Ellipse(X-3, Y-3, X+3, Y+3);

Последний раз редактировалось Stilet; 11.08.2012 в 13:20.
dimavit вне форума Ответить с цитированием
Старый 11.08.2012, 15:00   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Обе ошибки, скорее всего, являются наведёнными. Т.е. это проявление других багов в программе.

По первой ошибке: в X и Y, вероятно, лежит мусор. По второй: вероятно, где-то утечка ресурсов.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2012, 00:25   #3
dimavit
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Обе ошибки, скорее всего, являются наведёнными. Т.е. это проявление других багов в программе.

По первой ошибке: в X и Y, вероятно, лежит мусор. По второй: вероятно, где-то утечка ресурсов.
А как бы этот самый мусор можно выловить? Ошибки постоянно выскакивают именно в этих двух местах.
dimavit вне форума Ответить с цитированием
Старый 12.08.2012, 07:43   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Профилактикой кода после чтения умных книжек.

Кроме того, слова "вероятнее всего" означают, что это мне лично так кажется. Это может быть не единственная причина.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2012, 09:59   #5
dimavit
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Профилактикой кода после чтения умных книжек.

Кроме того, слова "вероятнее всего" означают, что это мне лично так кажется. Это может быть не единственная причина.
Профилактика кода позволила устранить утечку, а вот с первой проблемой справиться не удается. Call Stack показывает ошибку здесь:
:0040493b @ROUND +$3. Что это может означать?
dimavit вне форума Ответить с цитированием
Старый 12.08.2012, 10:02   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

У тебя интересный способ вести диалог.

"Как отремонтировать двигатель?"

Ээээ... учиться?

"Нашёл сломанную деталь. Что делать?"

Ээээ... что и где нашёл?



Ну и какого ответа ты ожидаешь? Ошибка в 12-й строке, что-ли? Мы не телепаты. Твою программу не видим. Твоих действий - тоже.

Хочешь полезных ответов - задавай конкретные вопросы с подробным описанием.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2012, 18:52   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

P.S. Подсказка: можно показать код и скриншоты.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid floating point operation _SatanA_ Общие вопросы Delphi 11 01.02.2012 11:26
delphi. invalid floating point operation Никита. Помощь студентам 9 21.07.2011 13:53
invalid floating point operation Mikhail91 Общие вопросы C/C++ 5 24.03.2010 00:05
invalid floating point operation mosq Общие вопросы Delphi 7 01.11.2009 13:28
Invalid floating point operation Skytis Помощь студентам 3 07.05.2008 12:16