Главная страница
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.091 c
15-1329597005
Юрий
2012-02-19 00:30
2013.03.22
С днем рождения ! 19 февраля 2012 воскресенье


15-1348259402
Юрий
2012-09-22 00:30
2013.03.22
С днем рождения ! 22 сентября 2012 суббота


3-1282290507
Дмитрий Белькевич
2010-08-20 11:48
2013.03.22
сообщение CHARACTER SET WIN1251 is not installed в FB embedded


2-1339503702
kurolesov
2012-06-12 16:21
2013.03.22
Работа с TBitmap. Как быстрее?


9-1192415932
Баклан
2007-10-15 06:38
2013.03.22
Где бы накачать интересных уровней для сокобана?