Форум: "Прочее";
Текущий архив: 2014.02.02;
Скачать: [xml.tar.bz2];
ВнизЗачем формы размещают в *.dll Найти похожие ветки
← →
Разведка (2013-08-14 11:44) [0]Что если не размещать формы в dll при большой программе?
← →
DVM © (2013-08-14 11:45) [1]
> Зачем формы размещают в *.dll
Чтоб жизнь медом не казалась
← →
Разведка (2013-08-14 11:48) [2]Я что хотел выяснить то это лучше делать при большом проекте или можно обойтись?
← →
sniknik © (2013-08-14 12:08) [3]это лучше вообще не делать... никогда.
← →
stas © (2013-08-14 13:13) [4]Разведка (14.08.13 11:48) [2]
Вопрос из ряда: "Что если я не буду в своем проекте использовать dll"
Смотря для каких целей тебе в проекте dll.
← →
Ega23 © (2013-08-14 13:30) [5]
> Я что хотел выяснить то это лучше делать при большом проекте
> или можно обойтись?
1. Это геморрой.
2. Многие вообще не понимают, зачем нужны dll.
← →
sniknik © (2013-08-14 13:41) [6]> Вопрос из ряда: "Что если я не буду в своем проекте использовать dll"
совсем нет, т.к. на этот вопрос ответ будет - ты не сможешь... практически в любом проекте используется куча dll-ек, не взирая на желание "использовать или не использовать".
← →
stas © (2013-08-14 13:47) [7]sniknik © (14.08.13 13:41) [6]
Согласен ).
Я имею ввиду, думаю и автор, написание собственных dll для использования в своем проекте.
← →
Dennis I. Komarov © (2013-08-14 14:41) [8]- обновлять нужно не все приложение, а только одну форму
- использовать диалоги в различных приложениях (например LogOn форма)
- предоставлять UI другим приложениям
← →
Обычный порошок (2013-08-14 14:53) [9]это лучше вообще не делать... никогда.
это можно делать всегда и тебе за это ничего не будет.
function bla_bla_bla : integer;
begin
создать форму в длл;
показать форму в длл;
если модалрезалт равно ок зен
result := какое-то значение
иначе
result := -1;
end;
← →
Ega23 © (2013-08-14 14:55) [10]
> - обновлять нужно не все приложение, а только одну форму
Ага. А потом обновится десяток форм и все 10 dll обновлять?
> - использовать диалоги в различных приложениях (например
> LogOn форма)
Что мешает просто вкомпилить эту форму (компонент)?
> - предоставлять UI другим приложениям
Единственно-весомый аргумент. Но тут нужно крайне тщательно подходить к вызовам, типам данных и т.п. Геморроя не меньше, а то и больше.
← →
DVM © (2013-08-14 14:57) [11]
> Обычный порошок (14.08.13 14:53) [9]
> это можно делать всегда и тебе за это ничего не будет.
Модальные конечно можно, но при этом DLL будет включать еще раз весь код VCL и размер ее сильно вырастет. И так столько раз сколько у нас таких DLL с формами. Лучше уж пакеты тогда.
← →
Обычный порошок (2013-08-14 15:00) [12]понеслась душа в рай.....
началось с того, что будет больно и будет гемор. всегда.
когда стало ясно, что ни боли ни гемора нет, стали пугать объемами файлов.
← →
DVM © (2013-08-14 15:02) [13]
> Обычный порошок (14.08.13 15:00) [12]
> когда стало ясно, что ни боли ни гемора нет
с немодальными еще какой
← →
Обычный порошок (2013-08-14 15:12) [14]ну то есть гемор есть всегда?
← →
DVM © (2013-08-14 15:24) [15]
> Обычный порошок (14.08.13 15:12) [14]
Я про всегда не говорил, это как раз ты про всегда сказал и привел в пример почему то именно модальную форму, что есть один из случаев использования форм в длл. С немодальными такой фокус не пройдет, т.е всегда использовать не получится беспроблемно.
← →
Ega23 © (2013-08-14 15:25) [16]
> ну то есть гемор есть всегда?
Да. как минимум - на поддержке вызовов dll (если динамическая загрузка). В ловле багов, ежели где-то stdcall или cdecl какой-нить забыл проставить.
С ShareMem-ом, либо с передачей всяких строк туда-сюда.
Очень много лишней работы. Выигрыш - непонятно в чём.
Иногда, осознанно - да, можно и форму туда запихнуть. На практике - мне всего раза 3 это было действительно нужно.
← →
Обычный порошок (2013-08-14 15:29) [17]ну то есть гемор есть не всегда, можно пхать формы в длл и вам за это ничего не будет?
← →
Dennis I. Komarov © (2013-08-14 15:32) [18]
> Ага. А потом обновится десяток форм и все 10 dll обновлять?
да... причем еще не факт что все сразу.
← →
Обычный порошок (2013-08-14 15:33) [19]кстати я могу щас накидать несколько примеров с формами без длл, в которых будет еще тот гемор (я гарантирую это. 146 %).
может тогда формы и без длл использовать нельзя?
← →
Dennis I. Komarov © (2013-08-14 15:39) [20]
> Что мешает просто вкомпилить эту форму (компонент)?
Ничего, но потом с собой таскать его + поддержка для различных дельфей.
Т.е. на вкус и цвет фломастеры разные...
> Единственно-весомый аргумент. Но тут нужно крайне тщательно
> подходить к вызовам, типам данных и т.п. Геморроя не меньше,
> а то и больше.
Не спорю, всегда надо аккуратно....
← →
DVM © (2013-08-14 15:44) [21]
> Обычный порошок (14.08.13 15:33) [19]
> кстати я могу щас накидать несколько примеров с формами
> без длл, в которых будет еще тот гемор
Валяй.
← →
Dennis I. Komarov © (2013-08-14 15:50) [22]
> DVM © (14.08.13 15:02) [13]
>
> > Обычный порошок (14.08.13 15:00) [12]
>
>
> > когда стало ясно, что ни боли ни гемора нет
>
> с немодальными еще какой
Например...
← →
Обычный порошок (2013-08-14 16:06) [23]Валяй.
валяю. (но оглядываясь на ниже)
ежели где-то stdcall или cdecl какой-нить забыл проставить.
немодальная форма.
caFree
переменная не обнуляется.
в результате косяк.
пример не дурнее того самого ежели что выше.
навалял?
← →
Dennis I. Komarov © (2013-08-14 16:07) [24]Кстати, кто пояснит?
Есть указатель x: PAnyRecInfo. Пусть в приложении есть кусок памяти, в котором храниться инфа от записи.
При вызове stdcall функции из dll AnyFunc(x), как инфа попадет в dll?
← →
Ega23 © (2013-08-14 16:08) [25]
> ну то есть гемор есть не всегда, можно пхать формы в длл
> и вам за это ничего не будет?
Гемор есть всегда. Для того, чтобы форму запихнуть в dll и аккуратно всё прописать, строк кода и затраченного времени будет больше, чем просто форму вкомпилить в проект.
Посему вопрос: а стоит ли?
← →
Ega23 © (2013-08-14 16:11) [26]
> При вызове stdcall функции из dll AnyFunc(x), как инфа попадет
> в dll?
Указатель - через стек, ну а унутре уже x^. ...
И опять-таки приколы с типами данных в PAnyRecInfo.
← →
Обычный порошок (2013-08-14 16:14) [27]Гемор есть всегда. Для того, чтобы форму запихнуть в dll и аккуратно всё прописать, строк кода и затраченного времени будет больше, чем просто форму вкомпилить в проект.
Посему вопрос: а стоит ли?
и при чем здесь конкретно длл, если гемор есть всегда?
формы использовать вообще нельзя.
← →
Dennis I. Komarov © (2013-08-14 16:20) [28]
> Посему вопрос: а стоит ли?
Это же совсем другой вопрос. Цели не были озвучены, как и функционал :)
← →
Ega23 © (2013-08-14 16:21) [29]
> и при чем здесь конкретно длл, если гемор есть всегда?
> формы использовать вообще нельзя.
Использовать можно всё. Вопрос в целесообразности. В большинстве случаев пихать форму в dll нецелесообразно. Как правило этим грешат начинающие разработчики, которые всё на свете готовы в dll запихнуть, покупаясь на "не надо будет всё приложение билдить".
Я могу понять, когда проект билдится полчаса. Но у нас-то это десятки секунд максимум.
← →
Ega23 © (2013-08-14 16:23) [30]
> Но у нас-то это десятки секунд максимум.
"у нас" - это у delphi-разработчиков.
← →
Dennis I. Komarov © (2013-08-14 16:28) [31]
> Указатель - через стек, ну а унутре уже x^. ...
Не, ты не понял... AnyFunc с какой памятью будет работать?
← →
Ega23 © (2013-08-14 16:30) [32]
> Не, ты не понял... AnyFunc с какой памятью будет работать?
Ну у приложения и dll адресное пространство же одно и то же. Другое дело, что менеджеры памяти могут быть разные.
← →
Dennis I. Komarov © (2013-08-14 16:30) [33]
> И опять-таки приколы с типами данных в PAnyRecInfo.
А чего в них прикольного? :) Вот все API в них и ничего...
← →
Ega23 © (2013-08-14 16:33) [34]
> А чего в них прикольного? :) Вот все API в них и ничего.
> ..
Дык там и string не найдёшь, везде пчары с длиной. Копирование каждый раз, счётчики ссылок... Ну гемор же.
← →
Dennis I. Komarov © (2013-08-14 16:39) [35]
> Дык там и string не найдёшь, везде пчары с длиной. Копирование
> каждый раз, счётчики ссылок... Ну гемор же.
да брось... а в dll со стрингами вообще не красиво
← →
DVM © (2013-08-14 16:43) [36]
> Dennis I. Komarov © (14.08.13 15:50) [22]
>
> > DVM © (14.08.13 15:02) [13]
> >
> > > Обычный порошок (14.08.13 15:00) [12]
> >
> >
> > > когда стало ясно, что ни боли ни гемора нет
> >
> > с немодальными еще какой
>
> Например...
Начнем с того, что в DLL и в основной программе в каждой свой RTTI и имеем проблемы из этого вытекающие в виде потенциальной несовместимости даже одних и тех же типов между собой.
Аналогично менеджер памяти в каждой свой.
Для нормальной работы немодальной формы нужен объект TApplication, который как то нужно передать форме в Dll, но опять же читаем про RTTI.
Будут проблемы с фокусом, ресайзом (если форма встраивается в другую) да много чего.
Все решаемо конечно, но зачем спрашивается такой геморрой?
← →
Ega23 © (2013-08-14 16:48) [37]
> да брось... а в dll со стрингами вообще не красиво
Внутри - сколько угодно. На приёме-передачи параметров экспортируемых функций - там да, нельзя. Точнее, можно, но с плясками вокруг ShareMem.
← →
sniknik © (2013-08-14 16:52) [38]вся ветка пример почему так лучше никогда не делать (одна из причин) - советами ... достанут, при любом вопросе, как только заикнешься о формах в dll.
при существующих вполне "спокойных" в этом отношении решениях реальных задач.
> Ну гемор же.
и еще какой...
http://delphimaster.net/view/15-1365767063/
там в последнем посте, оказалось вполне стандартный способ для некоторых "плагинных" компонент для передачи "строк" (выглядят как строки, в доках строки, но не нифига строки... ).
← →
DVM © (2013-08-14 16:54) [39]
> Обычный порошок (14.08.13 16:06) [23]
> немодальная форма.
> caFree
> переменная не обнуляется.
> в результате косяк.
>
> пример не дурнее того самого ежели что выше.
>
> навалял?
Это пример того как не надо делать, а именно использовать глобальные переменные.
При нормальном использовании форм согласно документации проблем нет.
При использовании немодальных форм в dll проблема уже есть изначально.
← →
Dennis I. Komarov © (2013-08-14 17:00) [40]
> Начнем с того, что в DLL и в основной программе в каждой
> свой RTTI и имеем проблемы из этого вытекающие в виде потенциальной
> несовместимости даже одних и тех же типов между собой.
> Аналогично менеджер памяти в каждой свой.
> Для нормальной работы немодальной формы нужен объект TApplication,
> который как то нужно передать форме в Dll, но опять же
> читаем про RTTI.
> Будут проблемы с фокусом, ресайзом (если форма встраивается
> в другую) да много чего.
> Все решаемо конечно, но зачем спрашивается такой геморрой?
>
ммм, я про Show vs ShowModal, про внутренности это отдельно...
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2014.02.02;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.003 c