Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В чём я не прав?


neXt ©   (2002-12-04 09:06:00) 

Есть два проекта:
- Test.exe
- MyPackage.bpl
пытаюсь из Test.exe создать форму находящуюся в MyPackage.bpl. Делаю так:
в MyPackage.bpl в секции инициализации

initialization
begin
RegisterClass(TFormInPackage);
end;

где TFormInPackage - это класс формы, зашитой в package.
А в Test.exe при необходимости поднять форму из package выполняю следующий код


procedure TForm1.Button1Click(Sender: TObject);
type
TFormClass = class of TForm;
var
F: TFormClass;
P: TPersistentClass;
begin
LoadPackage("MyPackage.bpl");
P := GetClass("TFormInPackage");
F := TFormClass(P);
F.Create(Application).Show;
end;

Здесь GetClass возвращает nil. Причём, MyPackage.bpl в память загружается, и если поставить точку прерывания на инициализацию юнита, в котором находится TFormInPackage то отладчик туда приходит, то есть RegisterClass(TFormInPackage) отрабатывает успешно. И ещё, если пытаться в GetClass передать имя класса, реализованного в exe, то всё работает.
Вот я и спрашиваю - в чём я не прав?


neXt   (2002-12-04 10:40:00) [1]

:) тупанул, сори


Игорь Шевченко   (2002-12-04 10:39:00) [2]

neXt © (04.12.02 10:25)

Упс! Я думал, это уже сделано...


neXt   (2002-12-04 10:25:00) [3]

отвечаю сам себе.
при сборке обоих проектов нужно чтобы они ссылались на один Classes, ибо Classes.RegisterClass в bpl-ке при её инициализации, вёл свой реестр зарегистрированных классов недоступный из exe.
Для нормальной работы достаточно было поставить в для Exe - шника Options->Packages-> включить "Build with runtime packages" и в строке ниже указать один только мой пакет.


Игорь Шевченко   (2002-12-04 10:08:00) [4]

Не соответствует :-)
Там сделан собственный механизм регистрации классов.


neXt   (2002-12-04 09:42:00) [5]

собственно, то что я пытаюсь делать, по смыслу, соответствует примеру, описанному в вашей ссылке
RegisterClass - добавляет, при загрузки пакета, класс в список зарегистрированных классов, а GetClass - извлекает из списка.


neXt   (2002-12-04 09:32:00) [6]

это не совсем то, о чём я спрашивал


Игорь Шевченко   (2002-12-04 09:28:00) [7]

http://www.delphikingdom.com/mastering/plugins.htm


Наверх

Титульная страница Поиск, карта сайта Написать письмо