Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.04 c
6-1086263642
Term
2004-06-03 15:54
2004.08.01
Как определить имя рабочей группы т.е. локальные настройки???


6-1085641355
samalex2504
2004-05-27 11:02
2004.08.01
Пересылка массива данных типа float через Socket


11-1074852651
Владимир Кладов
2004-01-23 13:10
2004.08.01
Версия 1.91


3-1087821905
Bulgar
2004-06-21 16:45
2004.08.01
Альтернатива базе данных


14-1089922108
bloodman
2004-07-16 00:08
2004.08.01
Компонент для Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский