Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: 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 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.722 c
15-1337202631
Германн
2012-05-17 01:10
2013.03.22
Подскажите инструмент


15-1347628130
Л.Е
2012-09-14 17:08
2013.03.22
Хинты. Обрезается строка, столкнувшись с символом |


15-1334739336
oldman
2012-04-18 12:55
2013.03.22
Забыл решение...


3-1278794858
jziiiiiii
2010-07-11 00:47
2013.03.22
access adotable


15-1337805002
Юрий
2012-05-24 00:30
2013.03.22
С днем рождения ! 24 мая 2012 четверг