Показаны сообщения с ярлыком Delphi. Показать все сообщения
Показаны сообщения с ярлыком Delphi. Показать все сообщения

4 июля 2018 г.

mORMot и Linux

В настоящее время активно идет улучшение поддержки Linux в mORMot. В основном, конечно, для серверных приложений.

Несмотря на то, что в Delphi с версии 10.2 есть компилятор для Linux, в качестве основного компилятора под Linux для mORMot был выбран FreePascal. Главная причина в том, что он открытый и бесплатный. И при этом FreePascal в части генерации кода лучше компилятора Delphi для Linux.

13 февраля 2015 г.

Пробуем перейти на XE5

В 2012 году я уже пытался перевести свои основные проекты с Delphi XE на XE2. Тогда дело встало из-за ошибки компилятора в XE2.
На этот раз я решил повторить эксперимент и попытался перейти с Delphi XE на версию XE5 (Update 2).

Кратко: сразу не заработало, проблемы удалось решить, но осадок остался.
Для интересующихся подробности ниже.

7 ноября 2014 г.

mORMot

Сегодня я хочу рассказать о mORMot. Надеюсь, эта статья заинтересует вас и подтолкнет попробовать библиотеку.

mORMot — это набор библиотек для разработки программного обеспечения на основе сервис-ориентированной архитектуры (распределенных, слабо связанных заменяемых компонентов, со стандартизированными интерфейсами и протоколами, в данном случае на основе REST). Все библиотеки доступны в виде исходного кода и распространяются по лицензии MPL, GPL или LGPL (на выбор).

Набор библиотек содержит большое количество полезных компонентов: сетевого взаимодействия, доступа к БД, шифрования, сжатия данных, создания PDF, выполнения JavaScript, ORM и многое другое. Все компоненты минимально связаны друг с другом — можно использовать только те, которые нужны. Например, для создания PDF нужно добавить в свой проект всего три файла: SynPDF.pas, SynCommons.pas и SynLZ.pas.

21 декабря 2013 г.

GitHub

Исходный код примера подключаемого модуля из статьи Пишем подключаемый модуль для ЛОЦМАН Клиент и исходный код IRemoteConnection теперь доступны на GitHub — github.com/achechulin/loodsman.

Текущую версию кода можно скачать без клиента Git или SVN, нажав кнопку «Download ZIP» в правой части страницы репозитория.

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), с помощью TDictionary. В качестве ключа будем использовать идентификатор сущности, а в качестве значения объект сущности. Идентификаторы сущностей могут быть как простые, так и составные. Для составных будем использовать запись — идентификатор должен быть объектом-значением (Value Object). В примере мы создадим коллекцию объектов «Пользователь» для ЛОЦМАН:PLM.

23 февраля 2013 г.

Всплывающие подсказки и QC85705

В VCL есть незакрытый баг QC85705. Он был открыт в июне 2010 года для Delphi 2010, но присутствует и в старых, и в новых версиях.

В ходе разработки одного из плагинов для ЛОЦМАН:PLM я столкнулся с ошибкой «Access violation at address...» при выгрузке плагина. Ошибка возникала не каждый раз, а только иногда, и приводила к краху всего приложения.