Форум: "Прочее";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизЛюбителям Forms in dll посвящяется Найти похожие ветки
← →
Leonid Troyanovsky © (2006-10-28 23:46) [80]
> Ketmar © (28.10.06 23:33) [78]
> >http://www.softwarer.ru/macro.html
> и что? нормально. сам такое же делал. %-)
Изложение Александра, скажем, весьма нестандартно.
Но, для себя уж давно отметил, что мыслит он верно.
--
Regards, LVT.
← →
Пусик © (2006-10-28 23:48) [81]
> Суслик © (28.10.06 23:19) [73]
> > Leonid Troyanovsky © (28.10.06 23:17) [70] > Бо, какая
> это плугинизация, если ты не сможешь подключить> свое творение
> ни к cpp, ни к vb, ни к иначе писанному хосту.А такое вообще
> возможно? И вообще - это уже концептуальный спор - что считать
> плугином. Я все-таки говорил бы о том, что речь про плугинизацию
> своей программы - пусть кто-нить еще пишет мне плугины :
> )
Нет никаких принципиальных проблем при использовании dll с формами, написанной в Dephi в программах, написанных на других языках.
← →
DiamondShark © (2006-10-28 23:54) [82]
> нахрен, собс-но, разбивать exe.
1. для коллективной параллельной разработки.
1.1 для исключения необходимости таскать весь исходный код (или dcu), т.к. бОльшая часть этого кода, как правило, одновременно всем разработчикам не нужна, а для монолитной сборки обязательна.
2. для расширения функциональности без полной пересборки.
2.2. в том числе и сторонними разработчиками
3. для выборочной установки конечным пользователям только требуемой функциональности (хочешь Word монолитным ехе?)
← →
Sergey Masloff (2006-10-29 00:00) [83]Leonid Troyanovsky © (28.10.06 23:40) [79]
Ну разделение не очень связаных функциональных модулей. У меня был сделан единый "интерфейсный" exeкоторый представлял собой просто хост для специализированных функциональных окон - там оформление счетов работа с банками отчетность - вобщем до фига их было. И далеко не всем все были нужны.
Интерфейс практически формировался из базы - администрато при установке задавал какие модули нужны какому пользователю и при логине из базы читалось и строилось меню тулбары и прочее.
Ненужные модули не ставились вообще. Если появлялся новый модуль которого раньше вообще (на момент компиляции exe) и не предполагалось то клиенту отсылался сам модуль и скрипт для базы который при загрузке позволял программе подключить новый функционал.
Вроде ничего все работало. Число клиентов мерялось тыщами. Число комбинаций модулей - сотнями (всего модулей пара десятков).
Конечно это же можно было по-другому сделать но сначала это показалось самой удачной идеей ее и реализовал. Особо криминального ничего не встретилось хотя были сначала трудности которые решать пришлось.
← →
Leonid Troyanovsky © (2006-10-29 00:06) [84]
> DiamondShark © (28.10.06 23:54) [82]
http://groups.google.com/group/fido7.ru.delphi/browse_frm/thread/58852c116fb80460/68ec522bdfc1c74f?#68ec522bdfc1c74f
--
Regards, LVT.
← →
DiamondShark © (2006-10-29 00:06) [85]
> DiamondShark © (28.10.06 23:54) [82]
ну и по-мелочи там кое что...
Вообще говоря, я был бы безмерно счастлив, если б единицей компиляции, загрузки и исполнения был бы паскалевский unit. Но так как нет в жизни счастья, приходится убеждать себя, что .NET на сегодня наиболее похож на хрустальный идеал в небесной синеве.
← →
Ketmar © (2006-10-29 00:08) [86]>[85] DiamondShark(c) 29-Oct-2006, 00:06
>Вообще говоря, я был бы безмерно счастлив, если б единицей
>компиляции, загрузки и исполнения был бы паскалевский unit.
напиши. динамическая загрузка DCU вполне реальна. получишь пародию на Оберон. %-)
← →
Суслик © (2006-10-29 00:10) [87]
> Leonid Troyanovsky © (28.10.06 23:40) [79]
> Сейчас меня беспокоит не столько bpl,
> сколько длл в классическом исполнении,
Почему тебя это беспокоит - по работе нужно? Или так, для общего знания?
← →
Суслик © (2006-10-29 00:12) [88]
> Суслик © (29.10.06 00:10) [87]
> > Leonid Troyanovsky © (28.10.06 23:40) [79]
> > Сейчас меня беспокоит не столько bpl,
> > сколько длл в классическом исполнении,
> Почему тебя это беспокоит - по работе нужно? Или так, для
> общего знания?
Т.е. мне как бы твоя позиция не ясна - это плохо, но зачем-то нужно.
← →
DiamondShark © (2006-10-29 00:20) [89]
> Leonid Troyanovsky © (29.10.06 00:06) [84]
Не убедительно.
На счёт удивления пп 20 Мб...
Сейчас подсчитал... Ну, у нас 18 Мб .NET сборок. Без картинок и third-party.
Нормальный объём кода для средненькой такой системки...
← →
Leonid Troyanovsky © (2006-10-29 00:21) [90]
> Суслик © (29.10.06 00:10) [87]
> > Сейчас меня беспокоит не столько bpl,
> > сколько длл в классическом исполнении,
>
> Почему тебя это беспокоит - по работе нужно? Или так, для
> общего знания?
Для общего-ж, конечно, знания.
Просто противно видеть, как люди впитывают ложные истины,
распространяемые, между прочем, за деньги.
Ну, а их критику презирают (видимо, из-за ее бесплатности).
Видимо, прав был тот философ, который предупреждал,
что ложные воззрения умирают только с их носителями.
Хотя, конечно, есть и более гуманный вариант - они
умрут вместе с дельфи, или с win32.
--
Regards, LVT.
← →
Суслик © (2006-10-29 00:26) [91]
> Leonid Troyanovsky © (29.10.06 00:21) [90]
> вместе с дельфи
не надо! дельфи не умрет :) 11ая версия обещает избавиться от многих ошибок. ждать недолго.
← →
Leonid Troyanovsky © (2006-10-29 00:29) [92]
> DiamondShark © (29.10.06 00:20) [89]
> Нормальный объём кода для средненькой такой системки...
Не знаю, где сейчас Анатолий (был в Новосибирске).
Не знаю, чем он сейчас занимается.
Но, три (или четыре) года назад я завидовал Вове Аксенову,
что он мог зайти (да и зашел) на экскурсию к Толику
с баночкой малинового варенья.
Т.е., за три года много воды утекло.
Кстати, первый SQL (без UNION) на 20К я увидел у Анатолия.
--
Regards, LVT.
← →
Sergey Masloff (2006-10-29 00:33) [93]По мотивам ссылки.
Толик конечно человек авторитетный но проблемы с линковкой и как раз на цифре 20 Мег у дельфи были и возможно есть сейчас.
Вопреки прикидкам это не 2 - 4 а всего лишь немногим более полутора миллионов строк кода. Без особых картинок.
Что автоматизируем - крупную финансовую компанию ;-) Всю деятельность- от прямой до учета съеденых сотрудникамив столовых салатов.
Но кстати со скоростью линковки проблем не было. То есть скажем 10 и 19.5 Мб собирались почти одинаково а 20.1 выдавал через минут 20 кряхтенья internal error
← →
Sergey Masloff (2006-10-29 00:34) [94]Впрочем вышеописаные проблемы мы формами в dll я не решал;-)
← →
Leonid Troyanovsky © (2006-10-29 00:54) [95]
> Sergey Masloff (29.10.06 00:34) [94]
> Впрочем вышеописаные проблемы мы формами в dll я не решал;
Вот-вот.
На свете есть более насущные проблемы, чем те,
о которых я (и не только я) предупредил.
Короче, думаю, что более тема в раскрытии не нуждается.
Умный поймет, а дураку, кроме метлы, я б ничего и не доверял.
--
Regards, LVT.
← →
Petr V.Abramov (2006-10-29 01:37) [96]> Leonid Troyanovsky © (29.10.06 00:54) [95]
похоже, у Вас религия такая... (:
прекрасно это работает, избавляет от кучи гимра. если даже где-то в потрохах по 4К на DLL утекает - да и хрен с ним, нормальный юзер больше 3-4 DLL не загружает обычно, при подходе ровно как у Sergey Masloff (29.10.06 00:00) [83]
"принцип разделяй и властвуй", или большую проблему подели на мелкие, а мелкие отдай решать детям
← →
Petr V.Abramov (2006-10-29 01:40) [97]но действительно, при наличии .Net разговор принимает бессмысленный характер
← →
Leonid Troyanovsky © (2006-10-29 01:53) [98]
> Petr V.Abramov (29.10.06 01:37) [96]
> похоже, у Вас религия такая... (:
Эк тебя перевернуло.
Нет у меня религии, атеист я, позитивист, угу.
> прекрасно это работает, избавляет от кучи гимра. если даже
> где-то в потрохах по 4К на DLL утекает - да и хрен с ним,
Дык, пусть себе у тебя и течет, мы не против.
> нормальный юзер больше 3-4 DLL не загружает обычно, при
И чего, устают грузить-то? Иль больше не дают?
> на мелкие, а мелкие отдай решать детям
А вот учить отца купатца нефиг, Декарт ты наш.
--
Regards, LVT.
← →
Petr V.Abramov (2006-10-29 01:59) [99]> И чего, устают грузить-то? Иль больше не дают?
ни к чему им, не нужен рабочему человеку больший функционал, в наш век узкой специализации
> А вот учить отца купатца нефиг, Декарт ты наш.
да купайся ты как хочешь, мне-то что, Архимед хренов
← →
Суслик © (2006-10-29 02:02) [100]как сказал предалгатель-всем-удавиться Дима А. - ОИНЧ
т.е. отпишись и не читай. Класс! Зачем же бесполезные словобранки делать? А?
← →
GrayFace © (2006-10-29 17:57) [101]Спасибо за ссылку, очень полезено, но можно вкратце, какие, все-таки, проблемы возникают при формах в dll? В инициализации модулей, связвных с Forms.pas, вроде, ничего крименального нет, в финализации, вроде бы, тоже. И где в MakeObjectInstance может утекать память?
По статье:
Странно, что Loader может заблаговременно не загрузить user32.dll, по идее перекрестных ссылок нет и можно было бы таких ситуаций избегать.
Под словом "private lock", видимо, подразумивается сажание на объект синхронизации?
← →
evvcom © (2006-10-30 11:16) [102]> [101] GrayFace © (29.10.06 17:57)
> И где в MakeObjectInstance может утекать память?
Да не... она там не утекает. :) Просто при выгрузке dll должна вызваться FreeObjectInstance, а вот она не вызывается. Тоже как-то года 2 назад разбирался, чего это MemProof мемлики показывает? :(
← →
Leonid Troyanovsky © (2006-10-30 13:34) [103]
> evvcom © (30.10.06 11:16) [102]
> > И где в MakeObjectInstance может утекать память?
> Да не... она там не утекает. :) Просто при выгрузке dll
> должна вызваться FreeObjectInstance, а вот она не
Вот, во FreeObjectInstance и не освобождается.
Для exe это пофиг, для dll - 4к
См. также
http://groups.google.com/group/fido7.ru.delphi/msg/c452abd43a7ca99e
Но, дело даже не в этом. Сколько еще подобных переменных таятся
в коде Forms и иже (и это кроме публичных Screen, PopupMenuList etc).
Специально-то для длл оный код не тестировали.
Т.е., вылезают эти грабли неожиданно.
Например, после появления TAction применявшие формы в длл
заметили, что оные действия не работают.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2006-10-30 14:23) [104]
> GrayFace © (29.10.06 17:57) [101]
> Странно, что Loader может заблаговременно не загрузить user32.
> dll, по идее перекрестных ссылок нет и можно было бы таких
> ситуаций избегать.
В большинстве случаев собс-ная длл будет грузиться гораздо
позже user32, advapi32 etc.
Но, возможны случаи, когда эта последовательность важна.
Я ранее по треду поминал D3 с инициализацией variant в System.
А ведь, иногда dll используют как юзеровские фильтры, и вполне
возможно, что привычного окружения там нет.
> Под словом "private lock", видимо, подразумивается сажание
> на объект синхронизации?
Это про то, что если уж определили блокировку, то озаботьтесь,
чтобы она была согласованной, с loader lock внизу иерархии?
Видимо, имеются ввиду те, которые внутри DllMain, как на рис 2.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2006-10-30 14:42) [105]
> GrayFace © (29.10.06 17:57) [101]
> все-таки, проблемы возникают при формах в dll? В
Если кратко, то причины:
- дублирование кода и переменных не только RTL, но и
глобальных объектов Application, Screen, TPopupMenuList и т.д.
- в случае работы не дельфийском хосте - неработоспособность
Application.Idle, а также обработки препроцессных сообщений типа CM_*
Ну, а проблемы: самые разнообразные: начиная глюков тулбаров, меню
хинтов, вплоть до неспособности перемещаться по tab order.
Наверное, проще указать то, с чем проблем менее всего, т.е.
с формами, показываеммыми ShowModal.
Но, как я уже говорил, во-первых, тоже не без явных проблем,
а во вторых - с N количеством скрытых.
--
Regards, LVT.
← →
ANB © (2006-10-30 15:45) [106]
> Leonid Troyanovsky © (30.10.06 13:34) [103]
+1.
Лично нарвался на проблемы при использовании DLL. Пытался по ссылкам через RTTI работать с объектами приложения (точнее - с одаковскими компонентами). Время от времени ловил AV.
Основная проблема - при использовании DLL, которая подключила VCL, мы получаем дублирование служебных областей памяти. И имеет кучу фокусов.
Если уж так нужно - BPL + галка рант-тайм пакетов. Тогда проблем нету. Тем более это рекомендует борланд.
ЗЫ. Софтварер - мой гуру. Ему я привык доверять. А сколько я пытался сделать по своему - столько потом переделывал по его совету, т.к. наступал на грабли.
← →
GrayFace © (2006-10-31 11:40) [107]Leonid Troyanovsky © (30.10.06 14:23) [104]
Точно. %) Хотя можно и больше 4к.
Leonid Troyanovsky © (30.10.06 14:42) [105]
Еще я заметил изменение порядка форм после Application.Minimize из dll. И в одном месте есть обращение к Application.MainForm без проверки на nil.
Но основные грабли решаемы. В чужом приложении можно попробовать хук WH_CALLWNDPROCRET и вызывать Application.Idle при отсутствии сообщений (в OnIdle Handled ставить false).
← →
Leonid Troyanovsky © (2006-10-31 13:32) [108]
> GrayFace © (31.10.06 11:40) [107]
> Но основные грабли решаемы. В чужом приложении можно попробовать
> хук WH_CALLWNDPROCRET и вызывать Application.Idle при отсутствии
> сообщений (в OnIdle Handled ставить false).
Меня это совсем не возбуждает :)
А так, с пощью обычной dll можно сделать "плагин" хоть к блокноту,
даже без его кооперации. Если, конечно, ручками, VCLess.
--
Regards, LVT.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.66 MB
Время: 0.053 c