bpl, как плагин и связь с основной программой
От: vvu  
Дата: 07.11.09 22:14
Оценка:
Свет, всем!
Exe-шник вырос до 7 метров и решил я дальнейший функционал делать плагинами. Остановился на bpl после прочтения статьи Дмитрия Полщанова "Еще раз о Plugin's…", Трофимова Игоря "Подгружаемые модули (plugins) в Delphi" и других, и долгих раздумий и взвешиваний между dll и bpl.
Вопрос такой: можно ли, как-то заставить bpl видеть и работать с уже загруженным (главной прогой) модулем данных
Буду очень благодарен за помощь в этом вопросе, т.к. уж жутко лень реализовывать интерфейсы или хотя бы, если уж никак без них не обойтись, пожалуйста, подскажите их необходимый минимум.

Ниже, на всякий случай, более-менее детально описал, что и как:
Мой плагин (bpl) содержит одну форму в которой реализуется некоторый функционал.
bpl я загрузил и форму показал, но через ошибку доступа к БД. Как передать коннект через интерфейсы я понял из статьи, но ситуация немного другая:
в bpl я юзаю модуль из основной проги с описанием класса, который при создании заполняет некоторые поля значениями из БД, через FIBDataSet в DataModule (DM). Т.е., когда стартует программа, то DM создается автоматом и открывает запрос и при создании моего класса в программе поля нормально заполняются значениями из БД:

  FNo   := DM.ds1.DataSet.FieldByName('NO').AsInteger;
  FName := DM.ds1.DataSet.FieldByName('NAME').AsString;

Но, когда класс креатится из формы в bpl, то DM = nil и конечно возникает AV.

В статье вычитал: "При загрузке пакета в память автоматически устанавливаются связи с уже загруженными пакетами". Но к модулям, я так понял, это, видимо, не относится. И, если DM (с FIBDatabase1 и кучей ДатаСетов) вынести в отдельный пакет, например, DM.bpl, то мой плагин.bpl сможет работать с Модулем Данных без реализации интерфейсов для коннекта и запросов (наборов данных, которые они возвращают)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.