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

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

Содержание одинаковых модулей в разных пакетах [D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

BFG9k ©   (2005-10-24 18:30:00) 

Несколько пакетов загружаются в основную программу с помощью LoadPackage. Эти пакеты содержат одинаковые модули и дельфи на это ругается. Как этого избежать ?

Не хотелось бы загонять повторяющиеся модули в отдельный пакет.


clickmaker   (2005-10-25 13:42:00) [21]


> Ты создавал внутри DLL экземпляр TFrame, передавал его в
> основную программу и работал с ним ?

да, назначал ему парентом MDI-child


BFG9k   (2005-10-25 13:33:00) [22]

Переделывать под DLL я уже ничего не буду, но ради интереса:

Ты создавал внутри DLL экземпляр TFrame, передавал его в основную программу и работал с ним ?


clickmaker   (2005-10-25 13:30:00) [23]


> В DLL можно использовать только модальные формы (проходили),
>  мне же нужно рабоать с экземпляром TForm (в моем случае
> - потомком TForm). Из DLL же я могу выудить только Handle
> окна и работать с формами только с помощью Api, не используя
> дельфи

я юзал DLL в качестве плагинов и прекрасно работал со всеми возможностями дельфей. Пользовал фреймы, лежащие в длл, как MDI-окна. Но при этом, правда, и экзе и длл должны быть собраны с одними и теми же run-time пакетами


BFG9k   (2005-10-25 13:21:00) [24]

У меня что-то вроде среды Delphi - SDI. Основная форма (которая сверху) - контейнер для множества других форм. В DLL можно использовать только модальные формы (проходили), мне же нужно рабоать с экземпляром TForm (в моем случае - потомком TForm). Из DLL же я могу выудить только Handle окна и работать с формами только с помощью Api, не используя дельфи (очень неудобно да и незачем).

В общем пакеты - это то , что нужно.

Ладно, создам еще один пакет "shared", буду везде включать его в requires и подгружать первым.


clickmaker   (2005-10-25 13:12:00) [25]


> BFG9k ©   (25.10.05 13:00) [6]

а тебе принципиально юзать именно пакеты, а не DLL? я так понимаю, у тебя что-то типа плагинов...


BFG9k   (2005-10-25 13:00:00) [26]

Нашел тут статью достаточно хорошую : http://www.softwarer.ru/packages.html

Правда там говорится то же самое : либо создавать другой пакет, либо переименовывать.


> достаточно, чтобы один бпл юзал этот модуль. А второй ссылался
> на первый


Используется следующий механизм:
1. Запускается основная программа.
2. С помощью FindFirst и FindNext она ищет файлы BPL в специальной директории и по очереди их подгружает с помощью LoadPackage

Поэтому bpl "не знает" будет ли он загружен первым, вторым или третьим.

Это будет известно уже при работе программы с помощью EnumModules и GetPackageInfo. Но все пакеты к этому моменту уже собраны и поздно говорить о том, чтобы один из них использовал какой-либо другой.


clickmaker   (2005-10-25 12:42:00) [27]


> Обе BPL используют всего один общий маленький модуль. Создавать
> из него одного пакет и включать его в requires - много чести.
>

достаточно, чтобы один бпл юзал этот модуль. А второй ссылался на первый


BFG9k   (2005-10-25 12:27:00) [28]

В общем мне это надо обойти. Какая-нибудь директива компилятора или еще что-нибудь. Есть такое мнение, что BPL - это DLL. Значит это ограничение навязано искусственно (а если нет, то в чем причина такого подхода?). А то получается следующее :

Обе BPL используют всего один общий маленький модуль. Создавать из него одного пакет и включать его в requires - много чести.

В итоге выход мне видится пока один : использовать этот модуль дважды (а потом и больше раз) под разными названиями. Но это как-то криво ...


clickmaker   (2005-10-24 18:41:00) [29]


> То что в разных библиотеках повторяются одни и те же модули
> - это обычная ситуация, что в этом такого страшного ?

для DLL да, но не для bpl


BFG9k   (2005-10-24 18:40:00) [30]

А в чем смысл DLL и BPL вообще? Динамическая загрузка библиотек - вот что мне нужно !  То что в разных библиотеках повторяются одни и те же модули - это обычная ситуация, что в этом такого страшного ?


clickmaker   (2005-10-24 18:36:00) [31]


> Не хотелось бы загонять повторяющиеся модули в отдельный
> пакет

а придецца. Смысл плодить модули? На то и пакеты, чтоб оптимизировать код


Страницы:   1 2

Наверх

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