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

Вниз

Runtime пакеты.   Найти похожие ветки 

 
Тимохов ©   (2004-07-07 15:34) [0]

Возникла страя задача портирования с д3 на д6.
В д3 мною был написан некий набор компонентов.
Проектом я не занимался лет 5, может 4. Не суть.
Поэтому изрядно это подзабыл.

При портировании возникли проблемы.
Портировал наш сотрудник, который теперь в отпуске.
Он заменил DsgnIntf на DesignIntf и в сделал DesignIDE runtime пакетом.

Вопрос - нужно ли мне поставлять DesignIDE с продуктом?

Не судите строго за вопрос :)


 
Тимохов ©   (2004-07-07 15:39) [1]


> Не судите строго за вопрос :)

т.к. после 4 лет работы с БД интереса к компонентам нет.

На ламерский вопрос - нужен точный ответ:)))


 
jack128 ©   (2004-07-07 15:43) [2]

а ты попробуй запустить на машине без Д, сразу и узнаешь ;-)


 
vuk ©   (2004-07-07 15:43) [3]

Нафига в Runtime пакете используется DesignIDE?


 
jack128 ©   (2004-07-07 15:43) [4]

хотя мое скромное ИМХО нужно..Все таки
> runtime пакет


 
Тимохов ©   (2004-07-07 15:46) [5]


> vuk ©   (07.07.04 15:43) [3]

и пакет и проложения мои.

как runtime пакет включен не в пакет, а в приложение...

если этого не делать, то не находит модуль prixies.


 
vuk ©   (2004-07-07 15:47) [6]

Явно перемешан в одном пакете Designtime и Runtime код. Нужно это дело разделять по разным пакетам.


 
Тимохов ©   (2004-07-07 15:49) [7]


> vuk ©   (07.07.04 15:47) [6]


> Явно перемешан в одном пакете Designtime и Runtime код

это точно.

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

Так все-каки - нужен desighide конечному пользователю?


 
Юрий Зотов ©   (2004-07-07 15:53) [8]

> Тимохов

DesignIDE содержит только то, что относится к работе в IDE и к runtime-пакету не должен цепляться ни в коем случае.

Вам нужно разбить Ваш пакет на два - runtime и designtime. В первом оставьте ТОЛЬКО сами компоненты, а во второй вынесите ВСЕ, что касается работы в IDE (все процедуры Register, редакторы свойств и компонентов, иконки для палитры и пр.). Ни один юнит из первого пакета не имеет право ссылаться в uses ни на один юнит из второго (а наоборот - сколько угодно). И в первом пакете никаких ссылок на DesignIDE быть не должно, а вот в requires второго - наоборот, должны быть DesignIDE и ссылка на первый пакет.

Вот и все. Первый пакет просто компилилируется в доступный по Path каталог, второй - инсталлируется в IDE. С приложением надо будет поставляеть только первый пакет.


 
Юрий Зотов ©   (2004-07-07 15:55) [9]

> Тимохов ©   (07.07.04 15:49) [7]
> Так все-каки - нужен desighide конечному пользователю?

Распространение DesignIDE есть нарушение лицензионного соглашения. См. Deploy.txt в дистрибутиве Delphi.


 
Тимохов ©   (2004-07-07 16:09) [10]

Ой, я наверное не так выразился: мой пакет к моему приложению я не цепляю как runtime.

еще раз.
есть мой пакет, назовем ПАКЕТ.
есть мое приложение, назовем ПРИЛОЖЕНИЕ.

ПАКЕТ содержит редакторы свойств и т.д.

Секция requires ПАКЕТА включает в себя:
requires
 vcl,
 vclx,
 designide;
В разделе project\options\packages в ПАКЕТЕ НЕ выбран ни один runtime пакет (у меня и галка задисейблена).

В аналогичном разделе ПРИЛОЖЕНИЯ стоит галка use runtime packages и выбран ОДИН пакет DesignIde. В search path выбрана диретория, где лежит пакет, сами юниты пакета в ПРИЛОЖЕНИЕ не явно не подключены.

Проверил на компе без Дельфи (еле нашел :)). Требует rtl60.bpl.
Это и есть требование указанного пакета?

ЗЫ. Прошу прощения, что ввел в заблуждение общественность.

ЗЫЫ. Да, наверное опять придется в это вникать...


 
Sandman25 ©   (2004-07-07 16:12) [11]

Независимо от выбранности, всегда требуются vcl.bpl и rtl.bpl.
Приложение, требующее DesignIde, - очень плохая идея.


 
Anatoly Podgoretsky ©   (2004-07-07 16:12) [12]

Тимохов ©   (07.07.04 15:34)  
По лицензии это можно подключать и поставлять только с design time пакетами.


 
Тимохов ©   (2004-07-07 16:12) [13]

Посоветуйте, что почитать про пакеты в Дельфи 6?


 
iZEN ©   (2004-07-07 16:13) [14]

/**Тимохов ©   (07.07.04 15:49) [7]
Дело в том, что все на что сейчас есть силы - это переписать методику сетевого взаимодействия и сериализации.
*/

Поподробнее про сериализацию можно? (Что это, для чего используется.)


 
Тимохов ©   (2004-07-07 16:13) [15]

о, блин, как все изменилось в обласит компонентов.

если не ошибаюсь в Дельфи 3 было иначе...


 
Тимохов ©   (2004-07-07 16:14) [16]


> iZEN ©   (07.07.04 16:13) [14]

под термином "сериализация" я имел в виду сохранение...
и все...
ЗЫ. Почему анкеты нет?! :))


 
Anatoly Podgoretsky ©   (2004-07-07 16:15) [17]

Тимохов ©   (07.07.04 16:13) [15]
Было иначе, но лицензионно одинаково


 
Игорь Шевченко ©   (2004-07-07 16:16) [18]


> Посоветуйте, что почитать про пакеты в Дельфи 6?


Тейкстейру с Пачеко


 
Юрий Зотов ©   (2004-07-07 16:16) [19]

> Тимохов ©   (07.07.04 16:12) [13]

1. Тейксейра, Пачеко.
2. Справка. Набрать packages - там и о проектированиии, и о поставке тоже есть.


 
Тимохов ©   (2004-07-07 16:17) [20]


> Игорь Шевченко ©   (07.07.04 16:16) [18]
>
> > Посоветуйте, что почитать про пакеты в Дельфи 6?
>
>
> Тейкстейру с Пачеко

у меня по Д5. Пойдет?


> Юрий Зотов ©   (07.07.04 16:16) [19]

Сегодня же и начну справку читать.


 
Тимохов ©   (2004-07-07 16:20) [21]

А все-таки rtl60.bpl при запуске программа требует именно потому что я использую DesignIde или я еще какие-то изменения в копонентах пропустил?


 
vuk ©   (2004-07-07 16:22) [22]

rtl60 программа требует потому, что нужно снять галочку "build with runtime packages".


 
Тимохов ©   (2004-07-07 16:27) [23]


> vuk ©   (07.07.04 16:22) [22]
> rtl60 программа требует потому, что нужно снять галочку
> "build with runtime packages".

она тогда модуль proxies требует в модуле DesignEditors.

Спасибо всем - не хотел трогать пакет, а видно придется :(((


 
Тимохов ©   (2004-07-07 16:35) [24]

Странно, в текущем проекте также есть пакет с определенным набором компонент, но таких проблем мне там не ведомо. Полагаю, что от design time"а я в нем требую только одно - положить компонент на определенную панельку, выставить align, name, т.е. стандартные поля. Инициализацию компонентов и их дизайн (наполнение, например, гридов) я делаю в runtime кодом.

В старом же проекте - весь дизайн делался имеено в designtime.
Может отказаться от этого?
Тогда и проблем с DesignIde не будет...


 
Sandman25 ©   (2004-07-07 16:43) [25]

[24] Тимохов ©   (07.07.04 16:35)

Не надо искать обходные пути. Надо делать, как надо делать :)


 
Юрий Зотов ©   (2004-07-07 17:01) [26]

> Тимохов ©   (07.07.04 16:35) [24]

Путаница с понятиями designtime и runtime.

Для компонента, фактически, никаких designtime не существует. И в среде IDE, и в программе он работает одинаково (за исключением того, что в коде могут быть вставки типа if csDesigning in ComponentState then ...). Поэтому всякие там выставления Align, Name и пр. в Object Inspector"е относятся, с точки зрения компонента, к runtime.

А к designtime относится все то, что ТОЛЬКО в IDE и используется. Не в готовой Вашей программе, а ТОЛЬКО в IDE. И вне IDE никогда не работает - значит, и не должно входить в код прикладной программы. Это процедуры Register, иконки компонентов для палитры, редакторы свойств и компонентов, эксперты IDE.

Вот все это и ДОЛЖНО быть вынесено во второй пакет. Это и будет design-time пакет, только его и надо инсталлировать в IDE. А сами компоненты (и только их!) оставьте в первом пакете - это и будет run-time пакет, инсталлировать его не надо, только скомпилировать.

Проблемы с DesignIDE возникают оттого, что в Вашем пакете есть редакторы свойств - они тянут за собой модуль DesignEditors, а тот, в свою очередь, тянет Proxies, которого нет (он входит в готовый пакет DesignIDE). Как только Вы уберете эти редакторы в design-time пакет, а в его requires пропишете DesignIDE - проблема исчезнет.

Перечитайте [8] - только внимательно, плз.


 
Тимохов ©   (2004-07-07 17:13) [27]


> Юрий Зотов ©   (07.07.04 15:53) [8]
> Первый пакет просто компилилируется в доступный
> по Path каталог

Какой path имеется в виду?


> С приложением надо будет поставляеть только первый пакет.

Вы имеете в виду поставлять если я компилирую приложение с галкой build with runtime packages?


> Sandman25 ©   (07.07.04 16:43) [25]

Что вы считаете обходным? Отход о редактирования в designtime? Так это опыт жизненный, что проекты только с runtime может и не вполне тардициооны с точки зрения программистов delphi, однако хорошо поддерживаются. Не буду объяснять конкретней, если хотите, могу в чате пояснить мысль


 
Юрий Зотов ©   (2004-07-07 17:21) [28]

> Тимохов ©   (07.07.04 17:13) [27]

> Какой path имеется в виду?

Переменная системного окружения Path.

> Вы имеете в виду поставлять если я компилирую приложение с
> галкой build with runtime packages?

Да. С галкой программе будут нужны ТОЛЬКО runtime пакеты, без галки ей вообще ничего не требуется. А designtime пакеты (включая DesignIDE) с программой не поставляются никогда, они ей просто не нужны (правда, есть особый класс программ, но это уже другая тема).


 
Sandman25 ©   (2004-07-07 17:24) [29]

[27] Тимохов ©   (07.07.04 17:13)

Обходным я считаю попытки избежать разделения пакета на два.


 
Тимохов ©   (2004-07-07 17:25) [30]


> Да. С галкой программе будут нужны ТОЛЬКО runtime пакеты,
> без галки ей вообще ничего не требуется. А designtime пакеты
> (включая DesignIDE) с программой не поставляются никогда,
> они ей просто не нужны (правда, есть особый класс программ,
> но это уже другая тема).

Ну тогда я спокоен за свое будущее:
1. я сделаю так, как вы сказали - все разнесу по двум пакетам
2. в приложении вообще ну буду ставить галку build with runtime packages. Повторю, что сейчас я ей пользуюсь только потому, что нужно как-то использовать DesignIde.

В этом случае ничего, кроме самого приложения, поставлять не надо будет.

Спасибо за ответы.

ЗЫ. Если что неверно в моих высказываниях, то плз поправте.


 
Тимохов ©   (2004-07-07 17:27) [31]


> Sandman25 ©   (07.07.04 17:24) [29]
> [27] Тимохов ©   (07.07.04 17:13)
>
> Обходным я считаю попытки избежать разделения пакета на
> два.

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


 
Sandman25 ©   (2004-07-07 17:30) [32]

[31] Тимохов ©   (07.07.04 17:27)

От Register Вы не откажетесь :) Даже для самого простоко компонента нужны 2 пакета. Если, конечно, Вы хотите этот компонент мышой на форму кидать, а не просто писать uses MyUnit и создавать только в run-time.


 
Тимохов ©   (2004-07-07 17:33) [33]


> Sandman25 ©   (07.07.04 17:30) [32]


> От Register Вы не откажетесь

Я начинаю это уже понимать...

Что это вообще за новости - с какого дельфи начался такой беспредел - потребность в двух пакетах? В третьем этого не было!

)))


 
Sandman25 ©   (2004-07-07 17:35) [34]

Не помню/знаю, с 5-го, по-моему.
Недавно пытался переводить проект с 4, на 6. Нарвался на те же траблы с DesignIDE.


 
Тимохов ©   (2004-07-07 17:37) [35]


> Sandman25 ©   (07.07.04 17:35) [34]

я вообще в ужасе :))) что значит несколько лет не заниматься какой-то областью - не догонишь потом :))))


 
Тимохов ©   (2004-07-07 18:05) [36]

Я чуточку разобрался на тестовом примере и по доке. Пока не работает, но смысл понял.

Не понятно одно - какова была мотивиция Борланда, чтобы сделать так? Чем было плохо в Дельфи 3? Я так полагаю, что это сделано для того, чтобы не тащить лишний код нужный только в дизайне?


 
Юрий Зотов ©   (2004-07-07 18:11) [37]

> Sandman25 ©   (07.07.04 17:30) [32]
> Если, конечно, Вы хотите этот компонент мышой на форму кидать,
> а не просто писать uses MyUnit и создавать только в run-time.

А тогда и вовсе никаких пакетов не нужно - только сам unit.

> Тимохов ©   (07.07.04 17:33) [33]
> с какого дельфи начался такой беспредел - потребность в двух
> пакетах? В третьем этого не было!

Если писать компоненты ПРАВИЛЬНО, то это нужно было всегда, начиная еще с D1. Ведь не нужны в Exe иконки компонентов? Не нужны. А если они сидят в одном пакете с самими компонентами, то они и в ресурсы Exe подтянутся - в итоге бесполезно растет размер Exe и больше ничего.

До D6 модуль Proxies поставлялся в виде DCU и поэтому проблем не возникало, даже при одном пакете. Размер Exe был несколько больше, чем мог бы быть, но проблем не возникало, все компилировалось. А начиная с D6 Borland оставила Proxies только в бинарнике DesignIDE - вот отсюда все и началось. Designtime-редакторы тянут DesignEditors, тот тянет Proxies - и надо включать DesignIDE. А включать его в состав runtime-кода нельзя, иначе при компиляции с пакетами нужно будет поставлять DesignIDE, распространять который нельзя - значит, надо обязательно делать два пакета.

Но это правильно. Потому что, повторюсь, по-хорошему это надо было делать всегда. Просто раньше это не было обязательным, а начиная с D6 стало обязательным, вот и вся разница.


 
Тимохов ©   (2004-07-07 18:16) [38]


> Юрий Зотов ©   (07.07.04 18:11) [37]

Спасибо за комментарий, Юрий.
К сожалению, когда начало проекта, который я сейчас "поднимаю" из истории, и начало моего общения с дельфи совпали. Поэтому много я просто не знал тогда.

Спасибо еще раз.
В основном проекте также надо будет сделать разделение...


> А тогда и вовсе никаких пакетов не нужно - только сам unit.

Знаете, в основном проекте я к этому и пришел - в пакете только 10 процентов того, что было год назад.


 
Anatoly Podgoretsky ©   (2004-07-07 19:05) [39]

Канал у меня слетел, не смог ответить сразу, ну тут уже все объяснили, дам только ссылку на FAQ где есть немного по теме.

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N144

Может что пригодится в дополнение в вышеизложеному.
Как было сказано проблема возникла начиная с Д6, где Борланд сделал разделение, сделал он по двум причинам, действительно разделить дизайн там вещи от программы и вторая, то что многие разработчики нарушали лицензионное соглащение и распространяли DesignIDE вместе с программой, включая некоторые из возможностей IDE в свой продукт не покупая дополнительной лицензии.


 
Igorek ©   (2004-07-07 19:46) [40]


> Тимохов ©   (07.07.04 15:34)  
> Возникла страя задача портирования с д3 на д6.

Офф: Радуйся, что у тебя исходники перекомпиливаются. Значит там ничего специфического не юзалось. Помниться писали мы компоненты - под несколько Дельфей сразу. Так в коде много было директив условной компиляции (IFDEF D6...). А исходники DreamLib вообще пестрят ими.
Не пойму, зачем Борланд меняет от версии к версии... Почему нету обратной совместимости?..



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

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

Наверх




Память: 0.59 MB
Время: 0.05 c
11-1078377224
vinter
2004-03-04 08:13
2004.08.01
Как поместить на форму jpg картинку


14-1089700791
TransparentGhost
2004-07-13 10:39
2004.08.01
IRC канал умер?


1-1090316223
Gear
2004-07-20 13:37
2004.08.01
Бесконечный цикл в отдельный поток.


1-1090154157
Cyxapeff
2004-07-18 16:35
2004.08.01
StringGrid удаление строки.


1-1089890552
Уток
2004-07-15 15:22
2004.08.01
Получить изображение из вебстранички