Конференция "Прочее" » Выбор структуры приложения с использованием пакетов
 
  • {RASkov} © (01.12.08 00:00) [40]
    > [37] Petr V. Abramov ©   (30.11.08 23:48)
    > а плагины библиотеки не используют? раз TFont испльзуется,
    > то используют.

    в плагинах TFrame с контролами и функционалом....
  • Сергей М. © (01.12.08 00:02) [41]

    > мороке при установке пакетов другими разработчиками при
    > добавлении пакетов кем-либо из них


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

    Или что ?

    Мне непонятно, хоть убей)


    > иные среды разработки лишены этого недостатка


    С этого момента максимально подробно, с аргументами ...
  • {RASkov} © (01.12.08 00:07) [42]
    > > а плагины библиотеки не используют? раз TFont испльзуется, то используют.

    Ааааййййй.... кажется въезжаю я в эту всю петрушку.... т.е. vcl.bpl, rtl.bpl как пить дать нужно с программой таскать... а остальное зависит от наполнения фреймов....
    Хм... тогда получится, что стандартные пакеты по сути нужны плагинам, так как в программе-загрузчике практически ничего нет, а все контролы находятся на фрэймах в пакетах.... т.е. получится, что при добавлении очередного пакета(плагина) он по возможности подтянет(не сам конечно, а я в ручную) еще пакетик другой в папку с программой.... так я понял эту кашу?
  • monogandhi (01.12.08 00:11) [43]
    Сергей М. ©   (01.12.08 00:02) [41]

    Мы уже выяснили диспозицию, суть которой в том, что либо нужно создавать пакет, и можно редактировать свойства компонента в дизайн-тайм, либо не создавать, но в дизайн тайм ничего редактировать нельзя. Поэтому продолжать спор - только модераторов злить.

    >С этого момента максимально подробно, с аргументами ...

    В MSVS можно отнаследовать от класса обертки, имея дизайн-тайм свойства базового компонента.
  • Сергей М. © (01.12.08 00:12) [44]

    > {RASkov} ©   (30.11.08 23:59) [39]


    Статические зависимости определяются любым PE-вьюером.
    Простейший входит в поставку Делфи и назфвается tdump.exe
    Можно и проще - запустить под встр.отладчиком приложение и вызвать меню среды View -> Debug Windows -> Modules

    С динамическими зависимостями сложней - "чужие" исп.модули, используемые приложением, могут грузить библ.модули в динамике, и отсутствие этих библ.модулей выявится только в ран-тайм в момент попытки их загрузки.
    Вопросы такого рода зависимостей решаются либо получением соотв.инф-ции от разработчиков сторонних модулей либо (за неимением этой инф-ции) дизассемблированием-трассировкой своего приложения.
  • Anatoly Podgoretsky © (01.12.08 00:14) [45]
    > Сергей М.  (30.11.2008 22:30:07)  [7]

    А без компиляции?
  • Юрий Зотов © (01.12.08 00:20) [46]
    > monogandhi   (30.11.08 23:24) [28]

    > имеется некоторый нетривиальный компонент для визуального
    > представления данных, написанный сторонними разработчиками.
    > Требуется некоторым нетривиальным образом изменить поведение его
    > субкомпонентов. Наиболее просто это можно сделать, создав потомка.

    Нет проблем, создавайте на здоровье.

    > Однако при этом, проект начинает размазываться по пакетам...
    > Насколько я понимаю, для Дельфи это стандартная практика?

    Если Вы хотите, чтобы Ваш компонент появился в палитре IDE, то он обязан быть помещен в пакет и зарегистрирован, а пакет инсталлирован в IDE (иначе откуда же Ваш компонент в IDE возьмется?). Ну а если появление Вашего компонента в палитре IDE необязательно, то и помещать его в пакет тоже необязательно, можете создавать потомка прямо в программе.

    ===================================================

    Только почему "размазываться"? Например, практически любая сишная программа (включая и саму систему) использует кучу DLL и этому никто не удивляется. И никто не говорит, что программа "размазывается по DLL".

    А пакеты Delphi - это те же DLL. И стратегия их использования такая же - в пакет помещается код, который либо используется более, чем в одном проекте (библиотеки), либо расширяет функционал приложения (плагины).

    И если код по своему смыслу не должен быть помещен в пакет, то никто и не заставляет его туда помещать.

    Так что - никакого размазывания. Размазывание наступает не от того, что без него нельзя, а оттого, что недостаточное понимание Delphi не позволяет грамотно спроектировать структуру программы.

    А Ваш совет тренировать телепатор - он, конечно, полезен. Но еще полезнее учить матчасть. Тогда и телепаторы не понадобятся.
  • Сергей М. © (01.12.08 00:28) [47]

    > monogandhi   (01.12.08 00:11) [43]


    Есть и третье "либо" - править исходники ориг.компонента и пересобрать пакет.
    Но о наличиии у тебя этих исх-ков ты так ничего вразумительного и не сказал, отделавшись туманной фразой "Наиболее просто это можно сделать, создав потомка".


    > В MSVS можно отнаследовать от класса обертки


    Это не аргумент.
    Там, мягко говоря, несколько иная концепция и идеология механизма виз.проектирования
  • Юрий Зотов © (01.12.08 00:29) [48]
    > {RASkov} ©   (01.12.08 00:07) [42]

    > так я понял эту кашу?

    1. Для того, чтобы какой-то кусок кода заработал, он должен быть загружен.

    2. Чтобы он был загружен, его надо откуда-то взять.

    3. Если EXE (или плагин) скомпилирован с пакетами, то в этом EXE (или плагине), код этих пакетов ОТСУТСТВУЕТ.

    4. Значит, все внешние пакеты, которые использует EXE (или плагин)  ОБЯЗАНЫ поставляться вместе с этим EXE (или плагином). Иначе неоткуда будет взять их код.
  • Сергей М. © (01.12.08 00:30) [49]

    > Anatoly Podgoretsky ©   (01.12.08 00:14) [45]
    > А без компиляции?
    >


    Не понял ?
  • Сергей М. © (01.12.08 00:41) [50]

    > {RASkov} ©   (01.12.08 00:07) [42]


    > в программе-загрузчике практически ничего нет


    Ну как же нет, если ты только что получил граблями ?)

    TFont есть ?
    Есть.
    Этот класс же не с Луны в программу-загрузчик свалился, а был собственноручно тобой, если угодно, "вкомпилирован" в исп.модуль программы-загрузчика, поскольку ты снял галку.
  • Сергей М. © (01.12.08 00:50) [51]

    > {RASkov}


    Если ты взводишь в проекте приложения-загрузчика (его правильнее и удобнее называть хост-приложение) галку ран-тайм пакетов, то хост-приложение будет использвать класс TFont в составе загружаемого им станд.пакета vcl.
    Этот же пакет требуется пакету твоего плагина, поскольку там тоже фигурирует класс TFont.
    При загрузке хост-приложением твоего пакета-плагина сист.загрузчик определит, что модуль стандартного vcl-пакета уже загружен в АП процесса хост-приложения, и с этого момента оба модуля - модуль хост-приложения и модуль твоего пакета-плагина - будут использовать один и тот же экз-р станд.пакета vcl, а значит один и тот же класс TFont.
  • {RASkov} © (01.12.08 00:57) [52]
    > [50] Сергей М. ©   (01.12.08 00:41)

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

    Я так понял, в такой структуре нужно еще следить за уникальностью имен модулей... т.е. при написании нового плугина для программы нужно помнить какие были имена раньше....
    Словил ошибку о использовании Unit1 в другом пакете.... забыл скопировать дословно, это я чтоб много не писать скопировал один пакет и сделал как бы второй плагин....
    Я не пишу чего-то серьезного, просто пытаюсь понять эту "пакетную плугонизацию")
    http://slil.ru/26386702 - вот примерно о чем я тут. В папке Loader ProjectGroup1.bpg...
    Нет проверок на исключения, но не в этом сейчас вопрос)
  • {RASkov} © (01.12.08 01:32) [53]
    Может есть предложения как сделать нечто похожее из примера в [52], но более грамотнее...
    Я расчитывал, что с плагинами в виде пакетов, будет гораздо проще, чем оказалось...
    Не, я конечно не против, все стандартные БПЛки вгрузить в директорию с хост-приложением, но как-то это не... незнаю как подобрать сюда выражение.

    Спасибо всем ответившим. Помогли познакомится поближе с пакетами...
    Но тут просто возникли сомнения, о правильности выбора подхода к моей задаче...
  • {RASkov} © (01.12.08 01:39) [54]
    > Но тут просто возникли сомнения, о правильности выбора подхода к моей задаче...

    А с другой стороны и альтернатив-то вроде и не остается..... если только ДЛЛ...
    Может быть я и не гонюсь за размерами приложения в целом.... т.е. пусть дублируются классы(куски кода).
    Главное - удобство написания нового плагина... и самое главное(тут минус у длл) - простота его подключения к хост-приложению(тут вроде бы плюс у BPL, хотя...)...
    Соб-сно подключение - это добавление новой вкладки со своими контролами и своим функционалом, ничем не зависящем от других плагинов...
  • Юрий Зотов © (01.12.08 01:51) [55]
    > {RASkov} ©   (01.12.08 01:32) [53]

    > Не, я конечно не против, все стандартные БПЛки вгрузить в директорию с
    > хост-приложением, но как-то это не... незнаю как подобрать сюда
    > выражение.

    А что в этом странного? Вы же не удивляетесь куче DLL, почему же куче BPL надо удивляться? Это одно и то же.

    При разработке хост-приложения с плагинной архитектурой важно с самого начала определиться, кто будет писать плагины - сам разработчик, или все желающие по его документации.

    Если первое, то Вы имеете полную свободу действий, но нужно помнить, что при смене версии компилятора должно быть перекомпилировано ВСЕ, а не только хост.

    Если же второе, то есть смысл не ограничивать плагинописателей рамками Delphi, а дать им возможность работать на любом языке - но тогда плагины должны быть выполнены в виде DLL и смысл использования BPL пропадает.

    Конечно, существует еще и COM, но это отдельный разговор.
  • Юрий Зотов © (01.12.08 01:54) [56]
    Добавление.

    Если же разработчик принимает решение, что плагины должны писаться только на Delphi определенной версии, то BPL будет однозначно проще и удобнее.
  • Petr V. Abramov © (01.12.08 01:59) [57]

    > А как тогда узнать список всех бпл, которые необходимы для
    > конкретного проекта....

    не помню, занимался этим 5 лет назад, как-то можно, завтра вспомню - расскажу.
  • Германн © (01.12.08 02:02) [58]

    > Сергей М. ©   (30.11.08 22:07) [1]
    >
    >
    > > у меня пока дуратское сообщение о том, что TFont не совместим
    > > c TFont.... :) Это мне уже знакомо
    >
    >
    > Притча о граблях)
    >
    >

    +1
  • Petr V. Abramov © (01.12.08 05:06) [59]

    > Германн ©   (01.12.08 02:02) [58]

    -2, причина в вилах :)
 
Конференция "Прочее" » Выбор структуры приложения с использованием пакетов
Есть новые Нет новых   [134446   +39][b:0][p:0.001]