|
Вопрос # 2 894/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
в двух разных пакетах есть формы которые наследуются от одной
в итоге загружаю один пакет
потом его выгружаю
загружаю второй и ошибка родительская форма уже используется первым пакетом
Примечание #1 (9 июня 2009, 12:08): hPack:= loadPackage('DocPack.bpl');
InitializePackage(hPack);
PersClass:= TFormClass(getClass('TForm5'));
f:=PersClass.Create(self);
SetObjectProp(f,'MSM',msm);
SetReadOnlyPropValue(f,msm,'MSM',PersClass);
SetPropValue(f,'Apparat',msm.x('w APPARAT'));
//SetReadOnlyPropValue(f,nil,'MSM',PersClass);
f.ShowModal;
f. Free;
//f:=nil;
FinalizePackage(hPack);
 |
Вопрос задал: seryoga (статус: 1-ый класс)
Вопрос отправлен: 9 июня 2009, 12:00
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 18; последнее сообщение — 14 июля 2009, 16:34; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 9 июня 2009, 12:03 [#1]:
форму за собой удаляли перед выгрузкой пакета?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 12:05 [#2]:
Да!
|
|
Вадим К (статус: Академик), 9 июня 2009, 12:29 [#3]:
а ещё наверное неплохо было бы проверить, "разрегистрировалась" ли форма. Если пакет "самопальный", то могло быть и не так. Если имена классов форм совпадают, то повторная регистрация как раз и приводит к последствиям.
Я непомню эту функцию, но думаю стоит начать с изучения этой статьи http://delphimaster.ru/articles/rtti/index.html , а там и идея придет.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 13:17 [#4]:
имена классов не совпадают в первом пакете TForm5 = class(TSSForm)
во втором пакете
TDerkGr = class(TSSForm)
и т д
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 13:18 [#5]:
класс TSSForm нигде не регистрируется
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 13:20 [#6]:
тоесть лежит в отдельном юните
|
|
Вадим К (статус: Академик), 9 июня 2009, 14:51 [#7]:
Если класс не зарегистрируется, то его использовать сложно.
Или его может создавать другой класс, который должен быть зарегистрированный.
Так как используется GetClass, то класс объязан быть зарегистрированный.
Родительская форма храниться в каждом пакете или она одна на двоих и храниться где то в третьем пакете?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 15:08 [#8]:
правильно зарегистрирован класс TFORM5
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 15:10 [#9]:
родительская форма храниться в U_TSSForm.dcu
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 15:11 [#10]:
Проблема на сколько я понимаю в том что 1 пакет говорит что U_TSSForm.dcu это его и даже когда выгружается не отпускает его
|
|
Вадим К (статус: Академик), 9 июня 2009, 15:15 [#11]:
вы путаете единицы компиляции и единицы выполнения. В работающем приложении не имеет значения в каком юните находился класс. Дело в том, что у Вас форма TSSForm находиться в двух копиях в двух пакетах. и две формы TForm5 и TDerkGr используют разные копии формы TSSForm. я не знаю, всё иерархию и связи между формами, но думаю, что надо начать с этого.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 17:02 [#12]:
Тоесть получается что оба пакета используют копии TSSForm и тот пакет который грузиться вторым не может загрузиться только потому что копия TSSForm уже загружалась другим пакетом??? даже при условии что он уже выгружен???
|
|
Вадим К (статус: Академик), 9 июня 2009, 17:25 [#13]:
потому что не отрегистрирована форма. А её может ещё кто то использовать....
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 17:36 [#14]:
так отрегистрирована!!!
|
|
Вадим К (статус: Академик), 9 июня 2009, 17:45 [#15]:
по коду не вижу. Я бы вынес общую форму в отдельный пакет. Это должно решить проблему.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 9 июня 2009, 17:47 [#16]:
Спасибо!!! Попробую так сделать о результатах напишу завтра
|
|
seryoga (статус: 1-ый класс), 14 июля 2009, 15:14 [#17]:
Вынес форму в отдельный пакет проблемы это не решило
Теперь после загрузки пакета с формой не загружается ни один пакет из тех которые грузились по очереди
!!!
|
|
Вадим К (статус: Академик), 14 июля 2009, 16:34 [#18]:
значит что то мешает. надо искать. Логи и вперёд!
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|