169 похожих чатов

Тема интересная. У меня тоже имеется ряд форм, фреймов и

библиотек, которые неплохо было бы закинуть в bpl. Насчёт наследования, как я понял, есть свой расширенный наследник TFrame. А что мешает вытащить весь функционал по этому фрейму в отдельный модуль и там всё отрабатывать, передавая экземпляры фреймов ? Если подумать, ЧТО из этого наследника TFrame, какие данные и события отделить, сделать это можно и без наследования. Я так делал обвязку для ряда форм, работает много лет. Кстати, контролы также расширял дополнительными данными и поведением, но там следует создание и удаление этих контролов отслеживать, ибо сам контрол должен понимать, что он расширенный и подчищать. На каком этапе работа с BPL ? У меня на уровне понимания необходимости, не работал с bpl-ями, а у тебя ? Вопрос к ALL : какие подводные камни в идее - перенести ряд юнитов в bpl и кидать разрабам вместо некоторых модулей - bpl ? код из него есть шанс вытащить?

3 ответов

28 просмотров

Код вытащить нельзя

Ну я вот применяю их уже пару лет в достаточно больших проектах, где нужна модульность... Например я сделал 2D-рендерер и скомпилил его в скажем ebgine.bpl... В global_app.pas этой bpl-ки определил глобальные переменные - которым присваиваю создаваемые экземпляры объектов. Теперь я подключаю этот пакет к exe. Ему виден этот рендерер. Создаю dll-ки плагины, подключаю к ним помимо rtl, vcl свой engine.bpl - теперь объекты из global_app.pas доступны и этим dll-кам - они могут манипулировать рендерером... А уже экзешник менеджерит эти плагины индексируя их инициализируя выгружая и т. д... И у нас в приложении общий менеджер памяти общий Application, Screen и т. д - никаких конфликтов... Единственнный недостаток (или преимущество) - всё собирать надо в одной версии Delphi и таскать с собой rtl.bpl, vcl.bpl. Ну или вот у вас есть форма приложения и плагины должны внедряться в её меню, создавать тулбары на этой форме - определяем в общем пакете переменную HostForm:TForm; HostMenu:TMenu... Когда exe создаст форму он может сделать присвоение этим переменным главной формы и меню свои, затем индексировать плагины - плагинам будет известна главная форма, или панель тулбара из global_app.pas, и меню основной формы, чтобы там насовать своих итемов... Как-то так!

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

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
16
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
6
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
Карта сайта