Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: CL | DM;

Вниз

В чём я не прав?   Найти похожие ветки 

 
neXt ©   (2002-12-04 09:06) [0]

Есть два проекта:
- 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, то всё работает.
Вот я и спрашиваю - в чём я не прав?


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

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


 
neXt ©   (2002-12-04 09:32) [2]

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


 
neXt ©   (2002-12-04 09:42) [3]

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


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

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


 
neXt ©   (2002-12-04 10:25) [5]

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


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

neXt © (04.12.02 10:25)

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


 
neXt ©   (2002-12-04 10:40) [7]

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



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.012 c
3-36051
Amper
2002-11-25 09:44
2002.12.12
Проблемы с ADO


14-36352
andrek
2002-11-20 11:53
2002.12.12
Желаю узнать ваше мнение


4-36486
Semion
2002-10-29 06:41
2002.12.12
удаленное соединение


1-36275
Vladimir1
2002-12-02 15:39
2002.12.12
Программная задержка


6-36314
Andrew2
2002-10-17 13:46
2002.12.12
ICQ