![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#31 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Я слышал что для Делфи есть такие эксперты, но никогда их не видел.
I'm learning to live...
|
![]() |
![]() |
![]() |
#32 | ||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Цитата:
Второе - просто уберите из строчки все design-time пакеты. Часто их можно отличить по заглавной D в имени пакета (откуда они там вообще взялись?). Ну и тогда утилита, которую вы ищете, будет не нужна: просто указываются все пакеты в строчке. Какие вы используете - с теми и будете слинкованы. Не используете - ссылок на пакет не будет.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||
![]() |
![]() |
![]() |
#33 | |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#34 | ||
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
![]() Цитата:
Цитата:
Круг замкнулся ![]() Но это уже высший пилотаж и пока терпит. Думаю, что стоит уже описать то, вокруг чего идёт обсуждение. Я пишу что-то вроде системы управления предприятием. Не спрашивайте меня, почему я его пишу с нуля, а не взял какое-нибудь готовое решение - ответ не прост. Так уж вышло. Итак, возникла задача так построить разработку программного обеспечения в нашей конторе, что бы можно было дописывать какие-то новые части и переделывать старые. Причём обновлять части необходимо без отрыва от производства. Я перепробовал кучу различныз вариантов (обновление всего экзешника, MDI в dll-ках, встраивание HTML и Flash в страницы). Причём каждый раз натыкался на какую-нибуль непреодолимую проблему или потерю удобства разработки. А недавно наткнулся на статью в Королевстве Delphi о плагинах, на основании которой решил попробовать реализовать поставленную задачу. Вот эта статья Во вложении программка (App.zip App.zip), которая может дать представление о конечной цели обсуждения. Похожа на любой современный браузер - вверху панель вкладок для управления страницами загружаемыми из пакетов. Один пакет - одна страничная форма. Естественно, скомпилирована программа без пакетов и тестовые формы встроены в приложение. Иначе на данном этапе разработки программуля эта запускалась бы только на моём компе. Для загрузки страниц выбираем пункт главного меню "Вид" и выбираем одну из двух тестовых форм. Можно загружать по несколько экземпляров одной и той же страницы. Планируется, что пакеты со страницами будут выкладываться в специально отведённом хранилище (напр. БД или веб-сервер), а при загрузке программы будут проверяться версии хранимых пакетов со страницами. При желании пользователи смогут обновить пакет или пользоваться старым. Естественно, каждая страница будет иметь доступ к БД через стандартный интерфейс. Если вдруг кому-нибудь это покажется интересным или полезным ( ну мало ли ![]() На данном этапе столкнулся с такой задачей. Предположим, пользователь решил обновить пакет N. Но в настоящий момент этот пакет загружен и созданы несколько экземпляров его класса страницы. Следовательно, перед обновлением этот пакет надо выгрузить, а перед выгрузкой закрыть и освободить все его страницы (назовём их так). Я пока не гуглил и не проводил исследования, но может у кого есть идея, как освободить все созданные экземпляры классов выгружаемого пакета. Причём мне кажется, что проще всего это будет сделать, если удасться написать функцию, которая по ссылке на экземпляр класса вернёт имя (или хэндл) пакета, в котором этот класс был описан/создан. Последний раз редактировалось Stilet; 13.08.2010 в 09:42. |
||
![]() |
![]() |
![]() |
#35 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Вопрос у меня созрел: Насколько мне известно на предприятиях не очень то приветствуется разнобой в ПО. Наоборот начальники все мечтают стандартизировать работы отделов до такой степени чтоб на любом компьютере любой человек работал с одним и тем же набором инструментов, иначе могут возникнуть казусы. Индивидуальные плагины оправданы только если на предприятии у каждого персоналка есть и то бабушка надвое сказала.т.е. если вышло что-то новое то полюбом всем им пользоваться а не только избранным. Все специалисты с которыми я общался в один голос заявляют что с плагинами морочится, так уж проще открыть исходники программы, доработать ее и выдать как единую, а не писать очередной гаджет. Может проще будет дорабатывать программу без использования плагинов?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#36 | |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
![]() Цитата:
А на счёт изменения исходного кода и обновления программы в рабочее время - могу Вас заверить, что (по крайней мере в моём случае) лучше потратить один раз время на заморочки с плагинами, чем раз в 2-4 недели сначала дописывать программу, которая потихоньку превращается в один большой клубок побыстрому наляпаных заплаток, после чего её ещё надо обновить у конечных пользователей. Но и это ещё не всё. В дальнейшем планируется внедрение какой-то части нашего ПО у удалённых клиентов. Тут уже с обновлениями не набегаешься. Плодить версии тоже не вариант. Так что, как ни старался я пойти по пути наименьшего сопротивления - не получилось... |
|
![]() |
![]() |
![]() |
#37 | |||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Я не думаю, что вы найдёте утилитку - уж больно задача специфическая. Цитата:
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Последний раз редактировалось GunSmoker; 13.08.2010 в 10:39. |
|||
![]() |
![]() |
![]() |
#38 | |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#39 |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
![]()
В секции Finalization любого юнита пакета напиши MyForm.Free и все дела. Если в пакете количество однотипных экземпляров формы несколько - заноси при создании их в TObjectList (юнит contnrs.pas) с OwnObject = True и в секции Finalization убивай этот список. UnloadPackage вызывает код из секции финализации юнитов пакета
|
![]() |
![]() |
![]() |
#40 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
Код:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Runtime runtime = Runtime.getRuntime(); | Pti44ka | Общие вопросы по Java, Java SE, Kotlin | 1 | 22.11.2009 10:45 |
без запроса Package? | koleko | Общие вопросы Delphi | 2 | 18.02.2009 22:59 |
RunTime Error713 (VB) | vio | Помощь студентам | 2 | 12.12.2008 20:45 |
Unit 'MyLib' implicitly imported into package 'MyPackage'. как исправить? | SkAndrew | Компоненты Delphi | 0 | 06.04.2008 00:28 |
Runtime programming | JoanM | Общие вопросы Delphi | 4 | 09.01.2008 11:00 |