Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: seryoga (статус: 1-ый класс)
Вопрос отправлен: 9 июня 2009, 12:00
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 18; последнее сообщение — 14 июля 2009, 16:34; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 9 июня 2009, 12:03 [#1]:

форму за собой удаляли перед выгрузкой пакета?
Галочка "подтверждения прочтения" - вселенское зло.
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 12:05 [#2]:

Да!
Вадим К

Вадим К (статус: Академик), 9 июня 2009, 12:29 [#3]:

а ещё наверное неплохо было бы проверить, "разрегистрировалась" ли форма. Если пакет "самопальный", то могло быть и не так. Если имена классов форм совпадают, то повторная регистрация как раз и приводит к последствиям.
Я непомню эту функцию, но думаю стоит начать с изучения этой статьи http://delphimaster.ru/articles/rtti/index.html , а там и идея придет.
Галочка "подтверждения прочтения" - вселенское зло.
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 13:17 [#4]:

имена классов не совпадают в первом пакете TForm5 = class(TSSForm)
во втором пакете
TDerkGr = class(TSSForm)
и т д
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 13:18 [#5]:

класс TSSForm нигде не регистрируется
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 13:20 [#6]:

тоесть лежит в отдельном юните
Вадим К

Вадим К (статус: Академик), 9 июня 2009, 14:51 [#7]:

Если класс не зарегистрируется, то его использовать сложно.
Или его может создавать другой класс, который должен быть зарегистрированный.
Так как используется GetClass, то класс объязан быть зарегистрированный.
Родительская форма храниться в каждом пакете или она одна на двоих и храниться где то в третьем пакете?
Галочка "подтверждения прочтения" - вселенское зло.
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 15:08 [#8]:

правильно зарегистрирован класс TFORM5
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 15:10 [#9]:

родительская форма храниться в U_TSSForm.dcu
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 15:11 [#10]:

Проблема на сколько я понимаю в том что 1 пакет говорит что U_TSSForm.dcu это его и даже когда выгружается не отпускает его
Вадим К

Вадим К (статус: Академик), 9 июня 2009, 15:15 [#11]:

вы путаете единицы компиляции и единицы выполнения. В работающем приложении не имеет значения в каком юните находился класс. Дело в том, что у Вас форма TSSForm находиться в двух копиях в двух пакетах. и две формы TForm5 и TDerkGr используют разные копии формы TSSForm. я не знаю, всё иерархию и связи между формами, но думаю, что надо начать с этого.
Галочка "подтверждения прочтения" - вселенское зло.
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 17:02 [#12]:

Тоесть получается что оба пакета используют копии TSSForm и тот пакет который грузиться вторым не может загрузиться только потому что копия TSSForm уже загружалась другим пакетом??? даже при условии что он уже выгружен???
Вадим К

Вадим К (статус: Академик), 9 июня 2009, 17:25 [#13]:

потому что не отрегистрирована форма. А её может ещё кто то использовать....
Галочка "подтверждения прочтения" - вселенское зло.
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 17:36 [#14]:

так отрегистрирована!!!
Вадим К

Вадим К (статус: Академик), 9 июня 2009, 17:45 [#15]:

по коду не вижу. Я бы вынес общую форму в отдельный пакет. Это должно решить проблему.
Галочка "подтверждения прочтения" - вселенское зло.
seryoga

seryoga (статус: 1-ый класс), 9 июня 2009, 17:47 [#16]:

Спасибо!!! Попробую так сделать о результатах напишу завтра
seryoga

seryoga (статус: 1-ый класс), 14 июля 2009, 15:14 [#17]:

Вынес форму в отдельный пакет проблемы это не решило
Теперь после загрузки пакета с формой не загружается ни один пакет из тех которые грузились по очереди
!!!
Вадим К

Вадим К (статус: Академик), 14 июля 2009, 16:34 [#18]:

значит что то мешает. надо искать. Логи и вперёд!
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.02 сек.