Проблема с подгружаемыми bpl
От: Аноним  
Дата: 17.09.04 12:49
Оценка:
Ситуация: реализован интерфейс плугинов с использованием собственно
интерфейсов. каждый плугин при свое загрузке регистрируется в программе

type
  TfmDouble = class(TPluginAutomationForm) //форма плугина
   ....
   procedure _SetAutomationFileName(Value:string); override;
   ....
   property AutomationFileName: string read fAutomationFileName write
_SetAutomationFileName;
  end;
initialization
  if not Assigned(GetClass('TfmDouble')) then RegisterClass(TfmDouble);


загружаем плугин LoadPackage(PlugInList[i]);
и далее при вызове плугина


var frmClass: TFormClass;

frmClass := TFormClass(GetClass('TfmDouble'));
if Assigned(frmClass) then   frmClass.Create(Self);


все это работает прекрасно.

но если далее

frmPlugin:= TPluginAutomationForm(frmClass);
frmPlugin.AutomationFileName:= 'полный путь к комендному файлу';

должна вызываться процедура _SetAutomationFileName, однако нет ошибка
именно в последней строке access violation in module shell32.dll

причем тип TPluginAutomationForm описан в общем рантайм модуле.

type
 TPluginAutomationForm = class(TForm)
   private
    fAutomationFileName: string;
   public
    procedure _SetAutomationFileName(Value:string); virtual; abstract;
   published
    property AutomationFileName: string read fAutomationFileName write
_SetAutomationFileName;
 end;


Подскажите, в чем тут могут быть грабли????
Может быть имеет смысл описать класс процедуру и ей передавать параметры, но
тогда теряется идее гибкости, когда использую rtti можно присвоить свойству
необходимый параметр.
+ в чем принципиальная разница класс и не класс процедур, досих пор не
уловил ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.