Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2009, 00:43   #1
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию Form в DLL

Можно ли как то запихнуть в ДЛЛ форму, но так что бы она не получалась размера самого екзешника? Типа все нужные модули скомпелированы в екзешник.
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 24.10.2009, 02:13   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вобще то форму можно запихнуть в длл. И в Библии Делфи это хорошо описано.

Цитата:
но так что бы она не получалась размера самого екзешника? Типа все нужные модули скомпелированы в екзешник.
А вот тут чето не понятно. Подробнее можно.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 24.10.2009, 03:13   #3
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
А вот тут чето не понятно. Подробнее можно.
Скорее всего имелось ввиду то, чтобы не увеличивался размер результирующего EXE. Если так, то скажу что EXE не прибавит в весе, ведь форма будет находиться в DLL. Ещё упомяну, что если вы пишите большие программы, то с каждой новой вы по новой создаёте некоторые типы форм (например форма настройки интерфейса приложения). Так вот чтоб этого каждый раз не делать, то есть проектировать интерфейс и программировать код, можно выносить такие формы за пределы результирующего EXE в DLL.

Таким образом можно нехило разгрузить программу. Каждая форма в проекте прибавляет ему по меньшей мере 100кбайт веса. И ещё, не стоит держать в одной DLL одну форму - это не оправдано, так как DLL содержащая форму так же толстеет на 100кбайт. Следовательно, чтобы грамотно и оптимально использовать эту возможность, форм должно быть по меньшей мере 3 (минимум 2).

В атаче лежит пример, компилируй его, появица Beep.Dll. Если нет желания писать программу для теста библиотеки, сделай так (пуск выполнить).

Код:
rundll32.exe Beep.dll,FormExec
Как видишь, DLL экспортирует всего одну процедуру - FormExec.
Вложения
Тип файла: rar DLL.rar (939 байт, 29 просмотров)

Последний раз редактировалось r9m; 24.10.2009 в 03:22.
r9m вне форума Ответить с цитированием
Старый 24.10.2009, 15:26   #4
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Вы не так меня немного поняли. Я имел в виду, что у меня в самой программе (в ексе файле) уже есть главная форма, ехе например весит килобайт 500, а остальные формы для удобста раскиданы по ДЛЛ, но каждая ДЛЛ заного кампилит в себя модуль Forms, можно ли как то ей указать что данный модуль уже скомпилен в ЕХЕ, что бы ДЛЛ не хранила в себе модули FORMS, Windows, Classes и т.д. а брала их из ЕХЕ файла.
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 05.05.2010, 06:03   #5
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Нет. Длл - сам по себе самостоятельный модуль. Для его работоспособности он должен включать в себя все необходимые ему модули (тут уж без тафтологии никак имхо). Другое дело, если вы самостоятельно реализуете все необходимые функции в своей библиотеке. Тогда вам не придётся тянуть в своей длл целые модули делфи.

Вроде понятно написал. Ежели что - поправят. Благо есть кому ;D
r9m вне форума Ответить с цитированием
Старый 05.05.2010, 10:59   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

что бы не толстеть можно использовать BPL (это специальный вид dll только для программ на Delphi)
Но в этом случае
1. в главной программе необходимо установить
build with runtime package
находится меню Project -> Options ->вкладка Packages

2. кроме своих BPL и EXE придется таскать много разных (как минимум 4-5) дополнительных модулей ( BPL из состава delphi). точное число определяется экcпериментально
view -> debug windows -> modules (те что *.bpl)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Form Rerek Общие вопросы C/C++ 5 12.04.2009 22:00
Form Simon..14 Общие вопросы C/C++ 1 01.02.2009 12:55
Form.Show в Form.Create UnD)eaD)Snake Общие вопросы Delphi 6 07.09.2007 11:13