Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Вопрос касается использования примеров из книги Краснова "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 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
1-1079822293
НерВ
2004-03-21 01:38
2004.04.11
Автозагрузка приложения


3-1081682338
Frozzen
2004-04-11 15:18
2004.04.11
КАК лучше данные из DBGrid перекинуть в ComboBox?


1-1082607570
Beglec
2004-04-22 08:19
2004.04.11
Принудительное выделение строки


1-1080068374
Vovans
2004-03-23 21:59
2004.04.11
Фокус в MDI приложении.


4-1075460477
comwad
2004-01-30 14:01
2004.04.11
Как найти HWND у TSpeedButton в чужом приложении?