вторник, 25 октября 2022 г.

Установка SDK Linux

Чтобы настроить компиляцию проекта из Delphi 10.3 в Linux нужно:

1) взять соответствующий PAServer (у меня находится в C:\Program Files (x86)\Embarcadero\Studio\20.0\PAServer\LinuxPAServer20.0.tar)
2) перенести LinuxPAServer20.0.tar на машину с линуксом (в моём случае это виртуалка с Ubuntu 21.04), распаковать архив
3) с помощью BASH перейти в папку с распакованным архивом и запустить paserver
4) в IDE выбрать пункт меню Tools -> Options -> Deployment -> Add, заполнить "Profile name" и "Platform", нажать Next
5) заполнить ip-адрес машины с линуксом (в моем случае это 192.168.1.37), проверить соединение, нажав "Test connection"
6) в IDE выбрать пункт меню Tools -> Options -> SDK Manager -> Add, заполнить соответствующие поля
Затем начнется установка SDK для компиляции под Linux. Когда она будет закончена, появится соответствующее сообщение. Виртуальная машина с линуксом больше не нужна.

воскресенье, 22 мая 2022 г.

Утечка FastReport

Как же мне надоело, что в сторонних продуктах для Delphi постоянно всплывают ошибки! Когда я работал с экосистемой .NET, тоже сталкивался с ошибками, но гораздо (!) меньше. Интересно, как обстоят дела с экосистемой Java?
За последний месяц ине пришлось исправить одну ошибку в модулей сериализации, одну в библиотеке EhLib, а теперь вот проблемы с FastReport!
Работая с отчетом, содержимое которого экспортируется в Excel, я заметил, что после закрытия программы FastMM ругается на утечки памяти:
FF-FMM

Я решил попробовать поискать в исходниках по строчке "TfrxIEMStyle.Create" и вот что обнаружилось
Resize-of-FF-find

В конструкторе этого объекта как раз выделялась память, которая очень была похожа по описанию, которое выдал FastMM
FF-const

Потом я просто стал проверять, все найденные участки кода и в самом последнем обнаружил выделение памяти, которое впоследствии не освобождалось
Resize-of-FF-bug

Вылечилось это элементарным добавлением вызова деструктора
Resize-of-FF-desct

Ну и конечно же надо пересобрать компоненты FastRerpot'а с помощью их утилиты
7