Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Про размещение класса в пакетах, DLL ках и т.д.   Найти похожие ветки 

 
_Seldon_   (2005-08-14 16:53) [0]

задача: есть некий абстрактный класс, используется он для прорисовки некоторых частей интерфейса. И есть множество классов-наследнико от него, реализующих тот или иной способ отрисовки. Эти классы-наследники и другие части программы совместно используют некоторые модули. Нужно теперь вынести каждый класс-наследник в отдельную DLL"ку и обеспечить возможность подключения их к основной программе.
1) Делал через пакеты (используя LoadPackage) - работает, но мне очень не нравится, что если пакет с классом отмечен в Projects\Options\Packages как runtime пакет, и он требует, допустим, пакет Vcl70.bpl, то он (Vcl70.bpl) тоже считается runtime пакетом и не линкуется к exe файлу. {1} К тому же получается, что программа будет работать только с теми пакетами, которые извесны на момент компиляции и указаны в Projects\Options\Packages. Если же не указывать пакет, то не работает (скорее всего по причине, что и обычная DLL - см. ниже) {2}
2) Делал через обычные DLL"ки: не работает по причине того, что модули, используемые совмесно программой и классом, лежащим в DLL, дублируются и по сути основная программа и DLL используют совершенно разные модули. {3}

Сейчас вижу один выход: избавится от совместного использования модулей или сделать интерфейс для доступа DLL"ок к модулям основной программы. И то и другое очень трудоемко.

Отсюда вопрос: как ещё можно решить эту задачу? Можно ли обойти {1}, {2} или {3}?


 
tesseract ©   (2005-08-14 17:02) [1]

А зачем тебе этот гемморой? Для решения этой проблемы изобрели COM и ActiveX. И подумая внимательнее :
1. Такое решение не снизит ни объём занимаемой памяти ни размер исполнимого модуля (в целом) а ИМХО даже увеличит и то и другое.
2. Избавится от совместного использования модулей - оптимальный вариянт, избавит от 70% лишнего геммороя при синхронизации и памяти сильно не сожрёт (классы то все в Delphi динамические)

ЗЫ это как это программа и DLL используют разные модули и при этом дублирующиеся модули?????


 
_Seldon_   (2005-08-14 17:21) [2]


> Для решения этой проблемы изобрели COM

COM не знаю совсем :) но видно придётся выучить


> Избавится от совместного использования модулей - оптимальный
> вариянт,

ага, тока там переписывать дофигища придётся...


> ЗЫ это как это программа и DLL используют разные модули
> и при этом дублирующиеся модули?????

в программе написано uses Unit1; и в Dll тоже самое написано. и если программа вызовет процедуру из этого юнита, меняющую например локальную переменную этого юнита, то Dll об этом не узнает и в её копии юнта эта переменная будет иметь старое значение


 
tesseract ©   (2005-08-14 17:33) [3]

>>>в программе написано uses Unit1; и в Dll тоже самое написано. и если программа вызовет процедуру из этого юнита, меняющую например локальную переменную этого юнита, то Dll об этом не узнает и в её копии юнта эта переменная будет иметь старое значение

Во блин даёшь DLL чихать хотела на локальные переменные приложения, общие там юниты или нет у неё "относительно своё" адресное пространство и локальные переменные свои для каждой instance. Ты думаешт почему в вин апи каждый раз надо дескриптор чаго-нибудь передавать?

ЗЫ:  У меня был такой же период (лет пять назад студентом) после этого честно решил что без геммороя жизнь светлее а пиво вкуснее....


 
_Seldon_   (2005-08-14 22:29) [4]


> Во блин даёшь DLL чихать хотела на локальные переменные
> приложения, общие там юниты или нет у неё "относительно
> своё" адресное пространство и локальные переменные свои
> для каждой instance. Ты думаешт почему в вин апи каждый
> раз надо дескриптор чаго-нибудь передавать?
дык я про это и говорил, только более простым языком :)


>  У меня был такой же период (лет пять назад студентом) после
> этого честно решил что без геммороя жизнь светлее а пиво
> вкуснее....
хе-хе :) дык не я это всё писал, если интересно, я хочу темы TBX (аддон к Toolbars2000 - g32.org) перенести в dll"ки...


 
tesseract ©   (2005-08-15 10:39) [5]

Темы? - ресурсы что-ли ?  а как это к классам относится? хочешь просто как ресурсы в dll запихать так в чём проблема поиск по форуму даст кучу ответов.



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
1-1123944383
tazik
2005-08-13 18:46
2005.09.04
Как выделить слова из KAК-файла


14-1123943420
root
2005-08-13 18:30
2005.09.04
Игры для мобильников.


4-1121348763
Subdigger
2005-07-14 17:46
2005.09.04
SC_RESTORE


1-1123925524
Brainman
2005-08-13 13:32
2005.09.04
Источники света


4-1121767285
bobah
2005-07-19 14:01
2005.09.04
Асинхронный ввод/выод com-порта