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

Вниз

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

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

Наверх




Память: 0.45 MB
Время: 0.004 c
14-36382
Manic Mechanic
2002-11-21 10:09
2002.12.12
Общеделфийский рейтинг пива !!!


14-36364
Bodom
2002-11-21 12:25
2002.12.12
Yaffil


14-36400
Baron
2002-11-22 07:38
2002.12.12
Delphi 7 Studio


1-36094
den_777
2002-12-02 01:37
2002.12.12
Как лучше поделить на части большой проект?


1-36288
smok_er
2002-12-01 00:52
2002.12.12
Auto-increment build number





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский