Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос проектам, использующим пакеты(packages)? [D7, XP]


Страницы:   1 2

Megabyte ©   (2006-11-02 13:21:00) 

Сделал программу, кот. подгружает пакет динамически. Соответственно, основной проект делал с установкой   build with runtime packages.
При запуске на другом компе программа поругалась, что не может найти библиотеку rtl.bpl, кот. используется в пакете.
1)Мне теперь надо с собой таскать все пакеты, кот. использую в проекте?
2)Если да, то где они должны хранится?


Суслик   (2006-11-07 22:03:00) [1]


> Как программно задавать/изменять системные переменные и
> переменные среды пользователя?

Уверен, что для этого нужно создать новый топик - это новый вопрос.


Megabyte   (2006-11-07 14:12:00) [2]


> Сергей М. ©  (07.11.06 09:34) [28]

> Megabyte ©  (07.11.06 09:28) [27]
Мало того, должны присутствовать и все другие bpl, от которых зависят твои модули. Зависимости можно просмотреть с пом. TDUMP.EXE

Да я это выяснил методом научного тыка(выяснив, какие используемые классы где описаны + стандартные модули типа RTLXX.bpl). :)
Все уже работает успешно.

Как программно задавать/изменять системные переменные и переменные среды пользователя?


DiamondShark   (2006-11-07 13:51:00) [3]

В результате некоторых советов у читателей может сложиться ложное представление, будто бы пакеты можно скомпилировать без установленной опции "Build with runtime packages"


Сергей М.   (2006-11-07 09:34:00) [4]


> Megabyte ©   (07.11.06 09:28) [27]


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

RTLXX.bpl обязана присутствовать на целевой машине - без нее не будет работать ни тот ни другой модуль. Мало того, должны присутствовать и все другие bpl, от которых зависят твои модули. Зависимости можно просмотреть с пом. TDUMP.EXE


Megabyte   (2006-11-07 09:28:00) [5]


> Тогда вопрос - как ты в хост-приложении намерен использовать свою bpl  после ее дин.загрузки ?

Создаю экземпляр класса, описанного внутри модуля в bpl, потом
вызываю его свойства и методы.


Reindeer Moss Eater   (2006-11-03 12:54:00) [6]

Но хочется стандартные пакеты хранить в отдельной папке.

HKLM\Software\Microsoft\Windows\Currentversion\App path\<your_exe_name>


Сергей М.   (2006-11-03 12:46:00) [7]


> Megabyte ©   (03.11.06 12:38) [23]


Э-э-э ... пардон, опция для package-проектов действительно не доступна и по дифолту установлена.

Тогда вопрос - как ты в хост-приложении намерен использовать свою bpl  после ее дин.загрузки ?


Reindeer Moss Eater   (2006-11-03 12:42:00) [8]

....опция BwRTP для созданного мною пакета ....

Эта опция не для пакетов.


Megabyte   (2006-11-03 12:38:00) [9]


> Ну а раз так, то следовало бы уточнять состояние этой опции и для bpl-проекта

Стоп. Или я дурак или одно из 2-х: опция BwRTP для созданного мною пакета не доступна(чекбокс.enabled = false ). Как я могу ее изменить?

Не думал, что тема вызовет такое бурное обсуждение. :) Было интересно послушать ваши мнения.
Я на самом деле только обучаюсь. И пользы от соданного мною пакета не так уж и много пока что. И общий объем проги со всеми пакетами больше, чем если бы сделал все в одном exe. Но в будущем планируется куча однообразных действий(запрос->отчет(Excel)->отправка на почту в конце рабочего дня), кот. будет выполнять мой класс, описанный в пакете.

Пакеты всепока храню в папке со своей прогой. Но хочется стандартные пакеты хранить в отдельной папке.

> таки добавить путь в path.

Больше хочу разораться в этом варианте, нежели писать в реестр.
Как программно задавать системные переменные и переменные среды?


Суслик   (2006-11-03 12:36:00) [10]


>  [21] Loginov Dmitry ©   (03.11.06 12:27)

+40мб самой программы :)
да... большая потеря 2ух мб


Loginov Dmitry   (2006-11-03 12:27:00) [11]

> никакими мегабайтами тут не пахнет


Точно? А если посчитать?

vcl70.bpl + rtl70.bpl = 1381376 + 778240 = 2159616

тоесть минимальная необходимая комплектация пакетов весит более 2-м МБайт


RASkov   (2006-11-03 12:27:00) [12]

> [18] Суслик ©   (03.11.06 12:25)

А зачем использовать "алгоритм поиска", можно полностью путь указать к конкретной ДЛЛ, БПЛ.


RASkov   (2006-11-03 12:25:00) [13]

> [11] evvcom ©   (03.11.06 09:08)
> За это либо стрелять, либо просто в помойку такую прогу.
> Без ИМХО.

А какую именно. Если та прога которая заменила "стандартный" файл на свой, имеет единственный вот этот косяк, а остальное на 150% отличная для тебя прога? Я думаю смысл [9] понят правильно. Т.е. можно "случайно испортить" файл так, что для "твоей" проги он 100% рабочий, но для других..... И опять же не все тонкости я описал в [9]


Суслик   (2006-11-03 12:25:00) [14]

Другой возможный аргумент, что при определенных услових LoadLibrary (которую в конечно имтоге вызывает LoadPackage) может иметь альтернативный алгоритм поиска библиотек. Например, первым делом искать *не* в текущем каталоге. Но согласно доке из msdn в тек. каталоге ищется в первую очередь.

Может тут есть какая-то тонкость, которую я не знаю?


Суслик   (2006-11-03 12:16:00) [15]

если аргумент "за" хранить bpl в system32 состоит в том, чтобы не терять место, то втопку такой аргумент, т.к. никакими мегабайтами тут не пахнет, а пробем с установкой и деплоем, больше - ну думаю спорить то с этим не будете?
в случае хранения в каталоге программы - взял и переписал весь каталог.


Сергей М.   (2006-11-03 11:56:00) [16]


> Программа не должна таскать за собой мегабайты продублированного
> кода


С этим абсолютно согласен.


> Оно в любом случае требуется


Нет, не в любом. А только в тех случаях, когда оно действительно небходимо.


> Можно придумать миллионы случаев, когда приложение будет
> нормально работать с двумя экземплярами RTL


Может здесь как раз один из тех случаев ? Автор же не уточняет... Зато уточняет, что хост-модуль собран с RTP. Ну а раз так, то следовало бы уточнять состояние этой опции и для bpl-проекта, вот только тогда можно былобы о чем-то предметно говорить, в т.ч. и о небходимости общей RTL для данного случая.


DrPass   (2006-11-03 11:38:00) [17]


> если бы требовалось обеспечить общий экз-р RTL для  взаимодействующих
> модулей

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


Сергей М.   (2006-11-03 10:50:00) [18]


> DrPass ©   (03.11.06 10:40) [13]



> ДОЛЖНА


> Иначе программист огребет


Интересный аргумент) ...


> DLL-плагинов


О плагинах у автора нет ни слова.

И вообще - мало ли зачем автор загружает эту bpl !
Может он тут же ее выгружает ?)

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


DrPass   (2006-11-03 10:40:00) [19]


> Состояние опции BwRTP для хост-проекта в этом случае не
> играет никакой роли.

Еще как играет. Если программа динамически грузит BPL-пакет, она ДОЛЖНА быть собрана с установленной BwRP. Иначе программист огребет почти все те же грабли, что и при использовании DLL-плагинов.


Сергей М.   (2006-11-03 09:32:00) [20]


> Сделал программу, кот. подгружает пакет динамически. Соответственно,
>  основной проект делал с установкой  build with runtime
> packages


Состояние опции BwRTP для хост-проекта в этом случае не играет никакой роли.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо