Исходный код примера подключаемого модуля из статьи
Пишем подключаемый модуль для ЛОЦМАН Клиент
и исходный код 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...» при выгрузке плагина. Ошибка возникала не каждый раз, а только иногда, и приводила к краху всего приложения.
1 сентября 2012 г.
Подключение к серверу приложений
В данной статье мы рассмотрим самостоятельное подключение к серверу приложений. Из предыдущей статьи мы знаем, как прочитать параметры подключения из реестра. Теперь мы подключимся к серверу приложений, выберем базу данных и рабочий проект, и сможем читать и изменять объекты базы данных.
5 июля 2012 г.
Подключение к серверу приложений. Наборы данных
Перед тем, как перейти к вызову методов сервера приложений, нужно разобраться с форматом, в котором сервер приложений возвращает наборы данных.
Сервер может возвращать наборы данных в двух форматах: внутреннее двоичное представление TClientDataSet или XML. По умолчанию используется первый формат, для использования XML необходимо вызвать метод
Сервер может возвращать наборы данных в двух форматах: внутреннее двоичное представление TClientDataSet или XML. По умолчанию используется первый формат, для использования XML необходимо вызвать метод
SetFormat сервера приложений с параметром 'xml'.
Подписаться на:
Сообщения (Atom)