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

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

Инициализация application в dll


Gu ©   (2011-06-13 09:37:00) 

Нужно ли создавать объект application (в dll) или достаточно в uses добавить Forms, и сделать application.handle:=h; // h - хэндл, полученый из приложения, которое юзает dll


Игорь Шевченко   (2011-06-13 20:20:00) [1]

Надо читать Тейксейру и Пачеко, тогда не будет нужды читать местные ответы. Они довольно подробно расписывают, как, когда и зачем использовать дельфийские DLL с формами


Anatoly Podgoretsky   (2011-06-13 13:43:00) [2]

Но предпочитают на своих.


Loginov Dmitry   (2011-06-13 13:03:00) [3]

Юрий, +1

А ведь многие прошли по этому пути и знают о граблях не по наслышке ;) Но все-таки, имхо, правильнее учиться на чужих ошибках.


Юрий Зотов   (2011-06-13 12:53:00) [4]

> Gu   (13.06.11 09:37)  

> Нужно ли создавать объект application (в dll) или достаточно в uses
> добавить Forms  и сделать application.handle:=h; // h - хэндл, полученый из
> приложения, которое юзает dll

Достаточно добавить Forms.

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

PPS
Впрочем, не исключено, что это все же принесет некоторую пользу - например, несколько собьет уровень самоуверенности. Иногда именно так воинствующие ламеры постепенно становятся нормальными программистами.


Anatoly Podgoretsky   (2011-06-13 12:21:00) [5]

Цели введения DLLПервоначально предполагалось, что введение DLL позволит эффективно организовать память и дисковое пространство, используя только один экземпляр библиотечного модуля для различных приложений. Это было особенно важно для ранних версий Microsoft Windows с жёсткими ограничениями по памяти.

Далее, предполагалось улучшить эффективность разработок и использования системных средств за счёт модульности. Замена DLL-программ с одной версии на другую должна была позволить независимо наращивать систему, не затрагивая приложений. Кроме того, библиотеки DLL могли использоваться разнотипными приложениями — например, Microsoft Office, Microsoft Visual Studio и т. п.

В дальнейшем идея модульности выросла в концепции COM и SOM.

Фактически, полных преимуществ от внедрения DLL получить не удалось по причине явления, называемого DLL hell («ад DLL»). DLL Hell возникает, когда несколько приложений требуют одновременно различные, не полностью совместимые, версии DLL-библиотек, что приводит к сбоям в этих приложениях. Когда система выросла до определённых размеров, количество DLL стало превышать многие тысячи, не все из них обладали полной надёжностью и совместимостью, и конфликты типа DLL Hell стали возникать очень часто, резко понижая общую надёжность системы. Поздние версии Microsoft Windows стали разрешать параллельное использование разных версий DLL, что свело на нет преимущества изначального принципа модульности.


Anatoly Podgoretsky   (2011-06-13 12:01:00) [6]


> Перевести "Forms" на русский, или сам справишься?

Тем более что теряется один из смыслов уменьшение размера, здесь происходит сильное разрастание.


Loginov Dmitry   (2011-06-13 11:49:00) [7]


> конкретный ответ нужен



> Нужно ли создавать объект application (в dll) или достаточно
> в uses добавить Forms, и сделать application.handle:=h


Создавать  application в DLL однозначно - не нужно, тем более при наличии Forms в uses он будет создан автоматически. Обычно, начитавшись литературы из разряда "дельфи глазами архангельского", пишут application.handle:=h. Но так тоже не следует делать.


> где я тут о формах говорю?


Перевести "Forms" на русский, или сам справишься?


Anatoly Podgoretsky   (2011-06-13 11:43:00) [8]


> Gu   (13.06.11 11:05) [3]

Торг тут не уместен


Gu   (2011-06-13 11:37:00) [9]

>> Loginov Dmitry
где я тут о формах говорю?

>> sniknik
без демагогии, конкретный ответ нужен


sniknik   (2011-06-13 11:21:00) [10]

> мне не нужны bpl, я вопрос про них задавал?
ты задал вопрос типа "как переходить улицу на красный цвет?" тебе ответили "на красный не переходят, переходи на зеленый"...
все одно хочешь на красный? ну вперед, на свой страх и риск, не спрашивая советов у людей которые так не делают. а раз спросил, то не возникай по поводу, что не о том отвечают... тебе еще много раз придется услышать - "dll не для форм! используй bpl!" (хотя, лично от себя... не стоит вообще заморачиваться  разделением программы на части... вот посмотри на свою прогу, она 20 мб? больше? если нет, то не стоит.)


Loginov Dmitry   (2011-06-13 11:08:00) [11]


> мне не нужны bpl, я вопрос про них задавал?


Тогда вам не нужны формы в DLL, да и скорее всего сами DLL, забудьте про эту идею.


Gu   (2011-06-13 11:05:00) [12]

мне не нужны bpl, я вопрос про них задавал?


Loginov Dmitry   (2011-06-13 10:11:00) [13]


> Нужно ли создавать объект application (в dll) или достаточно
> в uses добавить Forms, и сделать application.handle:=h


Очередная попытка хранения форм в DLL :)
Откомпилируйте EXE и все DLL с пакетами. Не забудьте при этом, что для запуска приложения на другом компьютере потребуются дополнительные BPL-файлы (у вас они в каталоге C:\WINDOWS\System32\).


Anatoly Podgoretsky   (2011-06-13 09:49:00) [14]

> Gu  (13.06.2011 09:37:00)  [0]

Не надо использовать ДЛЛ


Наверх

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