Ситуация: реализован интерфейс плугинов с использованием собственно
интерфейсов. каждый плугин при свое загрузке регистрируется в программе
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 можно присвоить свойству
необходимый параметр.
+ в чем принципиальная разница класс и не класс процедур, досих пор не
уловил

?