Вниз
Скачать: CL | DM;

Помогите с языковой конструкцией   Найти похожие ветки 

← →
>|   (2011-01-25 12:25) [0]

type
 TLoadPluginProc = function: TFormClass;

var
 Module: HMODULE;
 LoadPlugin: TLoadPluginProc;
begin
 try
   Module := LoadPackage(
     Format(FmtModule, [ExtractFilePath(Application.ExeName), PluginName]));
   try
     LoadPlugin := nil;
     @LoadPlugin := GetProcAddress(Module, LoadPluginProcName);
     if Assigned(LoadPlugin) then
      if  LoadPlugin is TPluginForm then //<- тут ошибка
        TPluginForm(LoadPlugin).CreatePlugin(Module, Param)
      else
        LoadPlugin;//возможно вызывается второй раз  
   except
     UnloadPackage(Module);
     raise;
   end;
 except
   on E: EAbort do
     raise;
 end
end


← →
>|   (2011-01-25 12:30) [1]

уже разобрался
var
 Module: HMODULE;
 LoadPlugin: TLoadPluginProc;
 LoadPluginResult: TFormClass;
begin
 if Pos(ExtModule, PluginName) = 0 then
 try
   Module := LoadPackage(
     Format(FmtModule, [ExtractFilePath(Application.ExeName), PluginName]));
   try
     LoadPlugin := nil;
     @LoadPlugin := GetProcAddress(Module, LoadPluginProcName);
     if Assigned(LoadPlugin) then
      LoadPluginResult := LoadPlugin;
      if  LoadPluginResult.InheritsFrom(TPluginForm) then
        TPluginForm(LoadPluginResult).CreatePlugin(Module, Param)
   except
     UnloadPackage(Module);
     raise;
   end;
 except
   on E: EAbort do
     raise;
 end


← →
Юрий Зотов ©   (2011-01-25 12:38) [2]


>  if  LoadPluginResult.InheritsFrom(TPluginForm) then...

А почему не
if  LoadPluginResult is TPluginForm then...
?


← →
Юрий Зотов ©   (2011-01-25 12:55) [3]

> LoadPluginResult: TFormClass;
Вопрос снят.


← →
Slym ©   (2011-01-25 12:56) [4]

>|   (25.01.11 12:25)
if  LoadPlugin is TPluginForm then //<- тут ошибка


type TLoadPluginProc = function: TFormClass;
описан в 2х местах в приложении и в пакете, и для программы это 2 разных неравных объявления!
для равенства нужно определить тип один раз. обычно это делается в отдельном, статично загружаемом пакете, остальные пакеты uses этот пакет и знают обо всех его определениях


← →
Slym ©   (2011-01-25 12:58) [5]

Slym ©   (25.01.11 12:56) [4]
TPluginForm

предыдущим постом мог ошибиться... где определен TPluginForm?


← →
>|   (2011-01-25 13:22) [6]


>  где определен TPluginForm?

в этом же модуле



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.047 c
11-1242650049
QAZ
2009-05-18 16:34
2013.03.22
TreeView + Checkbox


15-1336509003
Юрий
2012-05-09 00:30
2013.03.22
С днем рождения ! 9 мая 2012 среда


2-1346240125
s_t_d
2012-08-29 15:35
2013.03.22
Диалог SaveDiaalog не сохраняет файл...


15-1352731709
Kerk
2012-11-12 18:48
2013.03.22
Всякие полезные услуги в социальных сетях


15-1351629002
Юрий
2012-10-31 00:30
2013.03.22
С днем рождения ! 31 октября 2012 среда




   Наверх