Форум: "Media";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизВопрос касается использования примеров из книги Краснова "Delphi Найти похожие ветки
← →
Pa5ha (2003-12-16 18:50) [0]При компиляции и запуске проектов (некоторых) из Дельфи возникает ошибка. Из за чего же она возникает? При добавлении на форму панелей в немеренных количествах происходит тоже самое.
← →
ЮЮ © (2003-12-17 05:51) [1]Если полагаешь, что при работе возможна только одна ошибка, то глубоко ошибаешься, а если думаешь, что нам отсюда видно, что это за ошибка, то ошибаешься ещё глубже
← →
Думкин © (2003-12-17 08:30) [2]1. Наверное у тебя ошибка в программе.
2. У Краснова известны 2 книги.
← →
Крупье (2003-12-17 10:44) [3]Проблемы компиляции возникают из-за динамики развития Delphi. То, что написано в 5-й версии Delphi, совсем не обязательно будет компилироваться в 6-й и выше, даже при использовании только стандартных модулей, не говоря уже о случаях, когда вынужденно используешь нестандартные модули. Эти проблемы разрешаются одним из двух способов-используется Delphi именно той версии, о которой говорится в книге, либо берутся заголовочники именно для той версии, которую используете Вы. Адреса, указанные в книге, или поисковые машины, помогут найти такие заголовочники.
Решение технических проблем, связанных с разнообразием поведения примеров под разными видеокартами, часто указано в книге, как например, проблемы с буфером трафарета.
Есть проблема с последним примером книги по DirectX, проявляющаяся на современных "быстрых" картах. Самое простое ее решение-отключить вывод FPS.
← →
Pa5ha (2003-12-17 17:09) [4]Пардон. Я полагал, что вы читали эту книгу...
Ошибка возникает при удалении объектов (CleanUp(для тех, кто читал)). Код удаления (вызов CleanUp) находится в OnDestroy. При перемещении в OnClose ошибка исчезает. Хочу понять природу этой ошибки.
← →
Крупье (2003-12-17 17:48) [5]>Pa5ha (17.12.03 17:09) [4]
Ясненько. Про это тоже написано в книге. В следующем и подобном ему коде
if Assigned (FD3DDevice) then begin
FD3DDevice._Release;
FD3DDevice := nil;
end;
удаляйте вторую строку, то есть вызов метода _Release удаляете, а оставляете присваивание nil.
← →
Eagle Owl © (2003-12-18 22:11) [6]> Крупье (17.12.03 17:48) [5]
> Ясненько. Про это тоже написано в книге. В следующем и > подобном ему коде
> if Assigned (FD3DDevice) then begin
> FD3DDevice._Release;
> FD3DDevice := nil;
> end;
> удаляйте вторую строку, то есть вызов метода _Release удаляете, > а оставляете присваивание nil.
А в чём причина? (тоже с этим столкнулся)
← →
Крупье (2003-12-19 10:57) [7]Delphi при высвобождении памяти COM-объектов автоматом вызывает _Release. Сделано это для удобства программирования.
При запуске проектов примеров под управлением среды программирования Delphi, она (среда) перехватывает исключение, возникающее при повторном обращении к _Release. Хотя в коде реализации _Release и осуществляется проверка связанности переменной, преобразование типов, предшествующее этой операции, приводит к безобидному (в данном случае) исключению.
Можно отключить опцию перехвата сообщений средой, либо запускать откомпилированный файл отдельно от среды, либо не вписывать вызов _Release.
Если Вы сможете указать пример, приводящий к исключению в других ситуациях, я с удовольствием разберу и его.
← →
Pa5ha (2003-12-19 22:59) [8]Блин! Когда работает, а когда нет!!! Я пишу свой редактор и в нем такие баги появляются. Сейчас например работает. Кстати, почему DUnits не компилируется в Delphi7?
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c