Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
>|   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.092 c
15-1344315493
картман
2012-08-07 08:58
2013.03.22
резюме


6-1220943397
Layner
2008-09-09 10:56
2013.03.22
Расшифровать: " =?utf-8?Q?=D0=A0=D0=B0="....


15-1337806793
TStas
2012-05-24 00:59
2013.03.22
Чайнотский вопрос про батники


2-1329825696
TurikUs
2012-02-21 16:01
2013.03.22
Delphi 2010


15-1346830391
LDV
2012-09-05 11:33
2013.03.22
Delphi directory





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский