Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
Разница между Debug и Release
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Разница между Debug и Release (Прочитано 9223 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SCRIBE
Гость
Разница между Debug и Release
«
:
02-02-2017 14:18 »
Всем привет.
Случилось что-то необыкновенное, код работает в Debug режиме, но не в Release.
И я никак не пойму в чем дело.
Суть кода в формировании многоугольника с помощью GDI+ (старый API, т.е. модули GDIPAPI, GDIPOBJ), возможно причина в этом, но пока дело не дошло до переписывания кода под новый API (модуль GDIPlus), может есть на языке стандартные возможные решения таких проблем?
Как это вообще возможно?)) В первом варианте рисуется, во втором черный квадрат.
Забыл сказать, используется Delphi XE8.
«
Последнее редактирование: 02-02-2017 14:23 от ..::SCRIBE::..
»
Записан
SCRIBE
Гость
Re: Разница между Debug и Release
«
Ответ #1 :
02-02-2017 15:13 »
Решено.
Ошибка была в выходе за диапазон данных Single типа, изменив тип на Extended все заработало.
Странно что ошибок никаких небыло, и работало в Debug режиме, ну да ладно, я так понял старый модуль кривой како-то, с подавлением ошибок.
Записан
Aether
Специалист
Offline
Пол:
Re: Разница между Debug и Release
«
Ответ #2 :
02-02-2017 15:27 »
Цитата: ..::SCRIBE::.. от 02-02-2017 15:13
Ошибка была в выходе за диапазон данных Single типа, изменив тип на Extended все заработало.
Ого. А в расчёте точно такие цифры фигурируют? И почему сразу с Single на Extended минуя Double? Сорри, из Паскалей работал только на BP7.0 для поддержки Extended приходилось включать опцию в параметрах: "... 8087 ..." Вполне возможно, библиотеки для debug сопроцессор реализуют программно, а release использует его физическую реализацию.
Записан
SCRIBE
Гость
Re: Разница между Debug и Release
«
Ответ #3 :
03-02-2017 07:14 »
Нет, Double(Real) недостаточно. Вообще таких прям больших цифр там нет, там засунут алгоритм построения правильного многоугольника из C++ примера.
Вот кусок:
Код: (Delphi)
for
i
:
=
0
to
aSides
do
begin
angle
:
=
2
*
rdyPi
*
i
/
aSides
;
prevPoint
:
=
point
;
point
:
=
TGPPointF
.
Create
(
r
*
cos
(
angle
)
+
x
,
r
*
sin
(
angle
)
+
y
)
;
path
.
AddLine
(
prevPoint
,
point
)
;
end
;
Структура точки:
Код: (Delphi)
TGPPointF
=
record
public
X
:
Single
;
Y
:
Single
;
public
Хмм.. только увидел, что cos и sin возвращает Extended
Записан
Aether
Специалист
Offline
Пол:
Re: Разница между Debug и Release
«
Ответ #4 :
05-02-2017 09:16 »
Цитата: ..::SCRIBE::.. от 03-02-2017 07:14
Хмм.. только увидел, что cos и sin возвращает Extended
Странно, компилятор должен приводить всё корректно.
Как вариант, можно адаптировать под Паскаль.
https://forum.shelek.ru/index.php/topic,30754.new.html#new
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
Разница между Debug и Release
Загружается...