Главная страница
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.161 c
15-1339263264
Дмитрий С
2012-06-09 21:34
2013.03.22
Удаленный доступ к компу с маком.


2-1334410535
tolbase
2012-04-14 17:35
2013.03.22
Delphi 7! Как отловить событие minimize формы?


4-1263784073
SPeller
2010-01-18 06:07
2013.03.22
Синхронные вызовы Read/WriteFile при FILE_FLAG_OVERLAPPED


1-1295243133
Xmen
2011-01-17 08:45
2013.03.22
сохранение Word файла в Blob поле


2-1335965754
AV
2012-05-02 17:35
2013.03.22
Подскажите прием отладки св-ва Terminated у потока