Исходный код примера подключаемого модуля из статьи
Пишем подключаемый модуль для ЛОЦМАН Клиент
и исходный код IRemoteConnection
теперь доступны на GitHub — github.com/achechulin/loodsman.
Текущую версию кода можно скачать без клиента Git или SVN, нажав кнопку «Download ZIP» в правой части страницы репозитория.
Блог о программировании, об особенностях Delphi и разработке компонентов, о работе с ЛОЦМАН:PLM и подключаемых модулях
21 декабря 2013 г.
15 мая 2013 г.
Использование HTMLHelpViewer в DLL
В модуле HTMLHelpViewer со времени его появления в Delphi 2005 и до выхода Update 4 для Delphi XE2 была ошибка, не позволяющая использовать этот модуль в DLL. Ошибка состоит в том, что в секции
finalization
всегда выполняется вызов HtmlHelp(HH_CLOSE_ALL)
, что может приводить к загрузке библиотеки HHCTRL.OCX
. Для обычного приложения это не страшно, просто теряется немного времени на загрузку-выгрузку библиотеки. Но если мы пишем DLL (например, COM-объект или плагин для другого приложения), то выполнение секции finalization
будет происходить внутри DllMain, и попытка загрузить HHCTRL.OCX
приведет либо к зависанию приложения, либо к ошибке Access Violation (в зависимости от версии Windows).
26 апреля 2013 г.
WM_PAINT во время ожидания вызова COM-сервера
В новых версиях Windows, начиная с Vista, приложение получает сообщение
WM_PAINT
во время ожидания вызова COM-сервера.
Как написано в статье «Do you receive WM_PAINT when waiting for a COM call to return?», основной причиной для этого стала необходимость в правильной работе UAC (контроль учётных записей пользователей).
Если приложение не рассчитано на такое поведение, то это может привести к ошибкам.1 марта 2013 г.
Запись в качестве ключа TDictionary
В данной статье мы рассмотрим один тонкий момент при использования записи в качестве ключа для TDictionary.
Следуя общепринятым практикам разработки ПО, попробуем реализовать шаблон проектирования Коллекция объектов (Identity Map), с помощью
Следуя общепринятым практикам разработки ПО, попробуем реализовать шаблон проектирования Коллекция объектов (Identity Map), с помощью
TDictionary
. В качестве ключа будем использовать идентификатор сущности, а в качестве значения объект сущности.
Идентификаторы сущностей могут быть как простые, так и составные. Для составных будем использовать запись — идентификатор должен быть объектом-значением (Value Object). В примере мы создадим коллекцию объектов «Пользователь» для ЛОЦМАН:PLM.
23 февраля 2013 г.
Всплывающие подсказки и QC85705
В VCL есть незакрытый баг QC85705. Он был открыт в июне 2010 года для Delphi 2010, но присутствует и в старых, и в новых версиях.
В ходе разработки одного из плагинов для ЛОЦМАН:PLM я столкнулся с ошибкой «Access violation at address...» при выгрузке плагина. Ошибка возникала не каждый раз, а только иногда, и приводила к краху всего приложения.
В ходе разработки одного из плагинов для ЛОЦМАН:PLM я столкнулся с ошибкой «Access violation at address...» при выгрузке плагина. Ошибка возникала не каждый раз, а только иногда, и приводила к краху всего приложения.
Подписаться на:
Сообщения (Atom)