Как писать плагины к готовому проекту?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как писать плагины к готовому проекту?

Сообщение tria » 29.03.2023 11:25:46

Есть проект. Требуется не изменяя исходного кода проекта менять его работу под потребности заказчика, т.е. писать плагин, со следующими возможностями:
- добавлять новые реквизиты на форму,
- перепрописывать события существующих,
- вызывать процедуры из подулей объектов.

Возможно ли такое? Если да - то где бы про это почитать, на каких принципах это строится?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Как писать плагины к готовому проекту?

Сообщение Снег Север » 29.03.2023 12:32:22

Для начала - в проекте должна быть предусмотрина возможность - процедуры, подключения плагинов. БЕз этого - никак.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Как писать плагины к готовому проекту?

Сообщение delphius » 29.03.2023 14:22:57

По первой части вопроса ответ однозначный, если это не было изначально заложено в архитектуру, то решить можно будет только костылями, если вообще возможно.

tria писал(а):где бы про это почитать, на каких принципах это строится?

Начать с чтения трудов уважаемых людей)
delphius
постоялец
 
Сообщения: 129
Зарегистрирован: 18.03.2020 13:40:11

Re: Как писать плагины к готовому проекту?

Сообщение BlackShark » 29.03.2023 21:32:24

tria писал(а):Есть проект. Требуется не изменяя исходного кода проекта менять его работу под потребности заказчика, т.е. писать плагин, со следующими возможностями:
- добавлять новые реквизиты на форму,
- перепрописывать события существующих,
- вызывать процедуры из подулей объектов.

Возможно ли такое? Если да - то где бы про это почитать, на каких принципах это строится?

Нужно определиться какие плюшки даст вам система плагинов в ПО и оценить насколько это дорого в реализации, возможно ли и уместно ли в текущей архитектуре вообще. ИМХО всё из перечисленного про ООП, и решаемо без плагинов. Хотя плагины тоже ООП, те же программные интерфейсы, позволяют изолировать код, добавить абстракции, со всеми вытекающими +-, но если эти реализации интерфейсов включить в сам проект, то уже наверное не скажешь что у тебя система плагинов, чистый ООП. Опять ИМХО, системы плагинов оправданы в бэк-сервисах работающих в режиме 7/24, в которых с помощью тех же плагинов легко расширять функциональность, масштабировать, локализовывать проблемы. Подобные вещи позволяют сместить фокус разработки от программиста к инженеру, инженер легко становится архитектором сервисов, программисту легко реализовывать поставленные задачи, т.к. задача легко декомпозируется на отдельные плагины, тестировать unit-тестами, а так же автотестами если предусмотреть такую утилиту для системы, которая по заданному сценарию подаёт на вход сигнал/данные и сверяет выходной отклик с эталоном. Есть конечно ещё ниши просмотровых форм для разных типов данных, например как в Total Commander, но это наверное самый простой вариант - объяви базовый интерфейс (контракт) и реализуй его в своих плагинах (dll/bpl/unit).
Аватара пользователя
BlackShark
новенький
 
Сообщения: 44
Зарегистрирован: 20.05.2019 12:52:15

Re: Как писать плагины к готовому проекту?

Сообщение Alex2013 » 29.03.2023 22:00:27

tria писал(а):Есть проект. Требуется не изменяя исходного кода проекта менять его работу под потребности заказчика, т.е. писать плагин, со следующими возможностями:
- добавлять новые реквизиты на форму,
- перепрописывать события существующих,
- вызывать процедуры из модулей объектов.

Возможно ли такое? Если да - то где бы про это почитать, на каких принципах это строится?


То что вы хотите сделать не плагин, а патч или даже кряк (от английского crack) программы. Если это не сказывается на формате данных то подобное в принципе возможно но довольно ограниченно и не всегда надежно.

Я когда-то делал программу для конвертации данных из одной версии некой коммерческой программы в другую просто читая данные из формы в окне "исходной программы" и эмулируя ввод в окне "новой версии" ( при этом эмулировался весь клавиатурный набор и нажатия "на кнопки в форме" в обоих программах )

Народ это тогда спасло (форматы данных были не шифрованы, но бинарны, несовместимы и не стандартны, а базы данных там копились годами), но довольно часто в подобных ситуациях надежнее и быстрее сделать "инженерный анализ " и просто написать "функциональный двойник" программы с новыми функциями. ( Особенно если нет нужды в переносе данных или как вариант старая-БД имеет понятный и/или стандартный формат )
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

Рейтинг@Mail.ru