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

Вниз

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

 
Германн ©   (2016-03-03 23:58) [0]

Зачем они нужны?
Теоретически понятно зачем. Практически...?
Позвольте уважаемые форумчане устроить миниопрос.
1. Кто-нибудь из вас использует в своих программах рантайм пакеты?
2. Кто-нибудь видел сторонние программы использующие Дельфийские рантайм пакеты?


 
Rouse_ ©   (2016-03-04 00:03) [1]

1 нет
2 да
Нужны для уменьшения обьема приложения


 
Inovet ©   (2016-03-04 00:16) [2]

По идее должны экономить ОЗУ при запуске нескольких разных приложений их использующих.


 
Kerk ©   (2016-03-04 00:23) [3]

Да
Да


 
Германн ©   (2016-03-04 00:24) [4]


> Rouse_ ©   (04.03.16 00:03) [1]
> 2 да

И какие?
Уменьшение объёма приложения весьма неоднозначная проблема. И ЮЗ в той теме, как грамотный специалист, об этом предупредил. Вместе с исполняемым файлом приходится тащить/распространять ещё и библиотеки. Причём суммарный объём дистрибутива в этом случае оказывается большим, чем дистрибутив программы не использующей рантайм пакеты.


 
Германн ©   (2016-03-04 00:30) [5]


> Inovet ©   (04.03.16 00:16) [2]


> Kerk ©   (04.03.16 00:23) [3]

По идее, они действительно экономят, если я (к примеру) напишу и установлю две свои программы на один компьютер. Если же эти две программы написаны разными авторами, то в виду разных версий Дельфи у этих авторов никакой экономии весьма вероятно и не будет!


 
Германн ©   (2016-03-04 00:39) [6]

2 Kerk ©   (04.03.16 00:23) [3]
Не сразу заметил, что ты и на второй вопрос ответил "Да". Тогда если не "влом" назови эту (эти) стороннюю программу.


 
Eraser ©   (2016-03-04 01:41) [7]


> Германн ©   (03.03.16 23:58) 


> Теоретически понятно зачем. Практически...?

во времена первых версий Делфи во всю еще были в ходу дискеты, так что уменьшение размера еще носило практический смысл.


 
Германн ©   (2016-03-04 01:48) [8]

Это всё дела минувших дней. Сейчас- то зачем это вспоминать?


 
Eraser ©   (2016-03-04 02:19) [9]


> Германн ©   (04.03.16 01:48) [8]

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


 
Kerk ©   (2016-03-04 02:36) [10]

Да причем тут размер. DLL ведь не для уменьшения размеров придумали. А BPL - это те же DLL, но удобнее.


 
Юрий Зотов ©   (2016-03-04 06:10) [11]

Дело не только (и не столько) в размере. Плагинная архитектура - вот что просто и естественно реализуется через run-time пакеты. А это и мультиязычность, и гибкость, и наращиваемый функционал и т.д.


 
эндсоувот ©   (2016-03-04 08:45) [12]

плюс миллион других причин напрямую не связанных с экономиями памяти и вообще архитектурой.

например банальное разделение кода в античности когда про сабвершоны гиты и прочие тортойзы знали только древние гики


 
Dimka Maslov ©   (2016-03-04 10:02) [13]

1. Никогда.
2. Нет.


 
megavoid ©   (2016-03-04 10:07) [14]

Миллионы программ студии используют рантаймы, майкрософту приходится распространять библиотеки. Да даже интерпретатор PHP под windows не запускается без этого редиста, никто не мучается. К каждой версии студии свои дллки, разумеется есть версии 32, 64, встречаются и обновления в виде sp1 sp2 sp3. Можно мне возразить - дллки libc не то же самое, что и bpl - да, не то же самое, но суть одна - кому-то так удобней, кто-то пользуется.


 
megavoid ©   (2016-03-04 10:08) [15]

1 никогда
2 да


 
Pavia ©   (2016-03-04 10:13) [16]

Нет
В реальных нет. В качестве примера в статье Да.


 
Rouse_ ©   (2016-03-04 21:04) [17]


> Германн ©   (04.03.16 00:24) [4]
> И какие?

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


 
Rouse_ ©   (2016-03-04 21:07) [18]


> Юрий Зотов ©   (04.03.16 06:10) [11]
> Дело не только (и не столько) в размере. Плагинная архитектура
> - вот что просто и естественно реализуется через run-time
> пакеты.

Позволю себе возразить - BPL это самый простой способ убить хорошую идею с плагинами :)


 
Германн ©   (2016-03-05 00:55) [19]


> Kerk ©   (04.03.16 02:36) [10]
>
> Да причем тут размер. DLL ведь не для уменьшения размеров
> придумали. А BPL - это те же DLL, но удобнее.

BPL - это те же DLL, но с одним существенным недостатком. Они зависят от версии Дельфи, на которой они созданы. И следовательно могут быть использованы только в ПО созданном на той же версии Дельфи.
Собственно я знаю только одну среду разработки, в которой активно использовались RT-библиотеки. Это Visual Basic. Лет надцать назад, когда моя дочка была ещё маленькой, а компьютер дома был только один, а игрушек написанных на Visual Basic в интернете предлагалось море, я видел на компе туеву хучу библиотек от разных версий Бэйсика.


 
Eraser ©   (2016-03-05 01:00) [20]


> megavoid ©   (04.03.16 10:07) [14]


>  никто не мучается.

спорное утверждение.


> К каждой версии студии свои дллки, разумеется есть версии
> 32, 64, встречаются и обновления в виде sp1 sp2 sp3.

это называется словом мрак. практически все более менее серьезные программы и игрушки тянут за собой эти RT библиотеки, это не нормально.


 
Германн ©   (2016-03-05 01:07) [21]


> Rouse_ ©   (04.03.16 21:04) [17]
>
>
> > Германн ©   (04.03.16 00:24) [4]
> > И какие?
>
> Ну тут очень просто - если ты разрабатываешь хороший такой
> пакет приложений

Такой пакет приложений я разрабатывал для карбюраторных заводов России.
Только экономии особой я как-то и не заметил. Экономия в оперативке будет если одновременно буду работать много приложений из этого пакета. Чего у меня не было.  Экономия на HD конечно будет всегда, но когда мы из раза в раз отвечаем на вопросы новичков о "!слишком большом" размере программы на Дельфи, как-то неестественно самому при этом экономить несколько десятков мегабайт.


 
Германн ©   (2016-03-05 01:13) [22]

Единственно в чём я не уверен - это отладка пакетов. Может быть разделение пакета на RT и DT пакеты помогает при отладке. Но вроде не помню, чтобы ЮЗ советовал мне такое разделение сто лет назад, когда я испытывал проблемы с отладкой своих первых пакетов.


 
Юрий Зотов ©   (2016-03-05 11:46) [23]

> Rouse_ ©   (04.03.16 21:07) [18]
> BPL это самый простой способ убить хорошую идею с плагинами


Интересная мысль. Пояснения будут?

> Германн ©   (05.03.16 01:13) [22]
> разделение пакета на RT и DT пакеты помогает при отладке


Разделение пакетов позволяет:

1. При компиляции без пакетов - не включать в EXE ресурсы, которые нужны только в DT (например, иконок компонентов).

2. При компиляции с пакетами - не таскать вместе с EXE пакетов, которые нужны только в DT.


 
Rouse_ ©   (2016-03-05 12:56) [24]


> Юрий Зотов ©   (05.03.16 11:46) [23]
> > Rouse_ ©   (04.03.16 21:07) [18]
> > BPL это самый простой способ убить хорошую идею с плагинами
>
> Интересная мысль. Пояснения будут?

Конечно.
Плагин это то, что может добавить любой сторонний программист к нашему приложению (как правило посредством Plugin SDK), но раз уж рассматриваем BPL то:
1. Замечу - сторонний.
2. Замечу - не обязательно пишуший код на Delphi.

Теперь ситуация - допустим у нас есть приложение и к нему сторонними программерами написано 100 плагинов (мы их уговорили писать только на нашей версии Дельфи).
И вот мы переходим на новую версию и... и все эти плагины моментально отваливаются.

Наши действия? Обзванивать всех разработчиков плагинов и просить их тоже купить новую версию дельфи?

Действия пользователей?


 
Rouse_ ©   (2016-03-05 14:04) [25]

ЗЫ: вот к примеру один из вариантов наших плагинов, для подгрузки данных из сторонних форматов: http://ftp.grandsmeta.ru/grandsmeta/utils/gspluginsdk.rar

Достаточно просто и элегантно сделано, и заметь - никаких BPL :)


 
DVM ©   (2016-03-05 14:31) [26]


> Rouse_ ©   (05.03.16 14:04) [25]
> ЗЫ: вот к примеру один из вариантов наших плагинов, для
> подгрузки данных из сторонних форматов:

А кто-нибудь, писал плагины на С++ или С по вашему SDK.
Мне кажется проблемы с выравниванием будут.

Например,
TPluginInfo объявлена как упакованная в PAS файле, в тоже время в H файле про упаковку или выравнивание ничего не сказано.


 
Rouse_ ©   (2016-03-05 14:57) [27]

Попробуй ее выровнять по другому :) 4 байта + 4 байта + 4 байта :)


 
Rouse_ ©   (2016-03-05 15:00) [28]

ЗЫ: и да, конечно писали и пишут - как правило ребята из IT отделов госструктур типа РусГидро, НорНикель и т.п.


 
ВладОшин ©   (2016-03-05 15:19) [29]

0
1

ps
ранее сами делали dll с пакетами, когда в отделениях по РФ были модемы на 14400 - хоть какой-то был шанс у них стянуть обновление.
Сначала туда отсылался комп полностью настроенный. потом они докачивали изменения. Потом так было, потому что так было всегда, что-то менять дорого становилось. Сейчас не используется, у всех интернет стал толстый, и таки и сделали как-то однажды монофайлно.


 
Юрий Зотов ©   (2016-03-05 15:57) [30]

> Плагин это то, что может добавить любой сторонний
> программист к нашему приложению


Слишком узко. Плагин - это то, что изменяет функционал приложения без его перекомпиляции. И пофиг, кто этот этот плагин написал.


 
Rouse_ ©   (2016-03-05 16:08) [31]

Полностью согласен, Юр, я именно об этом и написал :)


 
DVM ©   (2016-03-05 16:17) [32]


> Rouse_ ©   (05.03.16 14:57) [27]
> Попробуй ее выровнять по другому :) 4 байта + 4 байта +
> 4 байта :)

В данном случае это просто везение. Я не конкретно об этой структуре.
Вы объявляете структуры packed в PAS файле, но не пишете #pragma pack в C. Это приведет к ошибкам рано или поздно, мое мнение.


 
DVM ©   (2016-03-05 16:24) [33]


>  Rouse_ ©

Плюс в сишном варианте используется int как эквивалент паскалевского integer.
Если за паскалевский вариант еще более-менее я могу ручаться, то ручаться за то, что int будет равен 4 байт нет. int32_t был бы значительно лучше в этом качестве.


 
Rouse_ ©   (2016-03-05 16:28) [34]

Приложение 32 бита, сложно собрать и подгрузить 64 битную библиотеку в 32 битное приложение.
Все работает и не первый год :)


 
DVM ©   (2016-03-05 16:38) [35]


> Rouse_ ©   (05.03.16 16:28) [34]


> Приложение 32 бита, сложно собрать и подгрузить 64 битную
> библиотеку в 32 битное приложение.

Да я верю :)
Но разрядность тут не при чем. Компилятор при чем. Стандарт C89 требует лишь, что бы
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Про размер int (32 или 64 не говорится).


 
Kilkennycat ©   (2016-03-05 16:43) [36]


>  int32_t был бы значительно лучше в этом качестве.

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


 
DVM ©   (2016-03-05 16:48) [37]


> Kilkennycat ©   (05.03.16 16:43) [36]


> ну дык когда размер имеет значение

В данном случае это API. А в API все имеет значение.


 
Rouse_ ©   (2016-03-05 17:32) [38]

Дим, ты не выпендривайся, ты пальцем покажи на пример кода, где с нашими заголовками прозойдет рассинхрон по выравниванию :)
А муколатуру я и сам читал, и в курсе о чем ты говоришь :)


 
Юрий Зотов ©   (2016-03-05 19:01) [39]

> Rouse_ ©   (05.03.16 16:08) [31]

Саш, проблема не в BPL, а в несовместимости версий Delphi на уровне откомпилированного кода.


 
Rouse_ ©   (2016-03-05 19:32) [40]

Юр, именно это я и сказал изначально :)

ЗЫ: вообще я думал что ты оветишь в плане: спили мушку :)



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

Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.049 c
15-1454511393
pavelnk
2016-02-03 17:56
2017.01.15
Солнечная станция


15-1449950981
@!!ex
2015-12-12 23:09
2017.01.15
Как получить обратную матрица?


2-1420270918
Drowsy
2015-01-03 10:41
2017.01.15
IDE Object Inspector Font , Explorer


15-1450244886
кгшзх
2015-12-16 08:48
2017.01.15
ora sys_refcursor (11g)


2-1419536677
AlexC
2014-12-25 22:44
2017.01.15
Как задать align регион для своего компонента?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский