Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.47 MB
Время: 0.043 c
7-1080035858
Sheng
2004-03-23 12:57
2004.04.11
Всё тот-же COM-порт


1-1079944301
LexaVV
2004-03-22 11:31
2004.04.11
Много Query


3-1081507724
Denis_Visma
2004-04-09 14:48
2004.04.11
Выборка данных за каждый месяци сумирование


3-1079495625
vi007
2004-03-17 06:53
2004.04.11
Refresh данных в Interbase


3-1082016558
div
2004-04-15 12:09
2004.04.11
IBDataSet.CloneDataSet?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский