Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизDelphi глючит или я. Найти похожие ветки
← →
@!!ex © (2007-07-30 11:43) [0]Запускаю проект на Delphi.
Ставлю Brakepoint.. Он отмечается болотнозеленым цветом(дескать недоступен).
Нормально Brakepoint ы отрабатывают только если стоят в dpr, и еще в одном модуле.
Если на вызове функции описанной в другом модуле нажимаю f7, то Delphi показывает вызовы функций из которых состояит данная, а не саму функцию.
Тоесть у меня есть класс Environment:TEnvironment;
Procedure TEnvironment.Draw;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
...
end;
ПРи нажатии f7 на
Environment.Draw;
Открывается модуль OpenGL.pas и там выделяется строчка
procedure glClear; external opengl32;
Что за фигня? Никак не пойму.
Причем заметил, что есть один модуль куда брэйки нормально ставятся, но почему тоже не понимаю.
Отлаживать ничего не могу. Жуть.
Ощущение такое, что модули просто не принадлежат проекту, хотя изминения в них отражаются на работе проекта.
← →
DrPass © (2007-07-30 11:45) [1]Оптимизация включена?
← →
StriderMan © (2007-07-30 11:47) [2]Project/build with run-time packages ?
← →
jack128_ (2007-07-30 13:21) [3]$D- ???
← →
Petr V. Abramov © (2007-07-30 13:32) [4].dsk сотри, иногда помогает
← →
pasha_golub © (2007-07-30 13:38) [5]{$D+} {$L+}
В модуле поставь. Некоторые сторонние компоненты это дело переключают
← →
@!!ex © (2007-07-30 14:00) [6]> [4] Petr V. Abramov © (30.07.07 13:32)
Буду дома - попробую.
> [5] pasha_golub © (30.07.07 13:38)
Нет ни формы, ни компонентов.
← →
Паша 1 (2007-07-30 14:44) [7]>procedure glClear; external opengl32;
похоже на первый взгляд на объявление процедуры из внешней dll-ки. только вот странное какое-то. не сталкивался
← →
@!!ex © (2007-07-30 16:40) [8]> [7] Паша 1 (30.07.07 14:44)
Может это потому что вы не работаете с 3D графикой, или если быть точнее с OpenGL.
Меня не смущает, что указывает на эту процедуру. Она действительно вызывается.
ТОлько вот так:
WinMAIN(Engine.dpr)->TEnvironment.Draw(EnvironmentUnit.pas)->glClear(OpenGL.pas)
Но когда я нажимаю F7 на строчке
Environment.Draw;
В модуле Engine.dpr
ТО перемещаюсь не в Draw, а сразу в OpenGL.pas.
Вот это меня напрягает, отладить ниче не получается...
← →
X9 © (2007-07-30 16:56) [9]> [7] Паша 1 (30.07.07 14:44)
> только вот странное какое-то. не сталкивался
Почему это странное? opengl32 - строковая константа.
← →
Паша 1 (2007-07-30 17:02) [10]
> @!!ex © (30.07.07 16:40) [8]
точно, не работаю, в детстве только с карандашом баловался. но ту, видимо, не в этом дело. может, ту шо-то с наследованием объектов случилось. забыл написать override, ну и перекрыл напрочь предка. или там еще чего. или исходники в нескольких вариантах имеюцца(я таким макаром иногда пользуюсь, под конкретный заказ. если клиент достоин отдельного каталога).
потому как брекпоинт джолжен быть красного цвета и точки останова синенькие сбоку, обязательно. если их нет, то этот код не используется. а Ctrl+левая кнопка мыши в дизантайме шо показывает? правда, это не всегда работает.
короче, тут навскидку мне трудно
← →
Паша 1 (2007-07-30 17:10) [11]
> X9 © (30.07.07 16:56) [9]
говорю ж - не сталкивался. а на кой она external? вообще такого зверя не видел external-константы. нетипитизированой. редкий, видать, зверь. хотя, не претендую на 100% знания языка. есть пробелы
← →
@!!ex © (2007-07-30 17:28) [12]Не. Проблема где то не в коде.
Исходники в нескольких вариантх не держу, разве что ответвления движка под разные проекты, но они отдельно лежат.
Проблема точно не в коде. Поскольку пострадал практически весь проект.
Я с ним пол года уже работаю и последнее время серьезных изменений не вносил. а Environment так и вообще уже месяц не трогал.
_________________________________
Ерунда какая то.
Удалил dsk - не помогло.
Поставил brakepoint, опять зеленый с красным крестиком.
Закомментил одну строчку, проверить, может модуль вообще не компилится, а используется, скажем dcu.
Изменения в проекте отобразились.
И после этого стали нормально brakepointы ставится и F7 нормально работает.
← →
@!!ex © (2007-07-30 17:30) [13]> а на кой она external?
Это значит что наде ее взять из dllки.
Это вроде стандартное обозначение для описания внешних функций.
← →
Паша 1 (2007-07-30 17:34) [14]
> Это значит что наде ее взять из dllки
значит я не ошибся. только вот просто видел другой синтаксис, вот и удивился
← →
pasha_golub © (2007-07-30 17:45) [15]
> @!!ex © (30.07.07 14:00) [6]
>
>
> > [5] pasha_golub © (30.07.07 13:38)
>
> Нет ни формы, ни компонентов.
Скрипач, ты что дальтоник? Я тебе русским по серому пишу: "в начале модуля пропиши {$D+} {$L+}". Если слово "модуль" смущает, напиши в начале кода.
← →
_Mike_ (2007-07-31 01:25) [16]
> Закомментил одну строчку, проверить, может модуль вообще
> не компилится, а используется, скажем dcu.
> Изменения в проекте отобразились.
> И после этого стали нормально brakepointы ставится и F7
> нормально работает.
DCU был без дебаг инфы. Почему - вопрос к дельфе. Обычно достаточно сделать Build удалив предварительно все DCU.
Еще случается что дельфя "забывает" пути к сырцам и юзает DCU - опятьже BP может не ствиться на функциях которые в DCU.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c