Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2015, 14:23   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию в проекте использование bpl package

Ребята здравствуйте . Раньше работал на одном большом проекте , проект било на Delphi и там было несколько bpl файл проекте ... коротко сказали что преимущество этого bpl что не увеличить размер exe файл .... там на каждом bpl файле работал несколько человек. У каждого было разные задача...
У меня несколько вопросов .
1) Где почитать преимущество и недостатки применение bpl package
2) Где посмотреть пример как его создается и как его использовать проекте.
Может скажете какой то книга-литература где это написано подробно или силка где можно посмотреть примеру .
Изображения
Тип файла: jpg Start_Balance.jpg (109.3 Кб, 182 просмотров)

Последний раз редактировалось xxbesoxx; 08.01.2015 в 14:28.
xxbesoxx вне форума Ответить с цитированием
Старый 08.01.2015, 14:38   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
1) Где почитать преимущество и недостатки применение bpl package
Ну не в exe потянешь лишние 3 Mb кода, так в BPL. И будет у тебя уже 2 файла, 1 exe в 100 кб, второй bpl в 3 Mb. И exe без него не заработает.

Вот и вся разница. А ещё Exe загружается быстрее, компилируется и линкуется только действительно твой код.

Но как не крути, BPL будешь таскать с собой.

Цитата:
2) Где посмотреть пример как его создается и как его использовать проекте.
BPL это компилированный DPK в режиме run-time пакета. Просто толаешь туда свои классы и модули, компилируешь, подключаешь к проекту и используешь в uses модули из BPL как если бы у тебя не было bpl.

На королевстве Delphi ,а так же у товарища GunSmoker'а на сайте, есть цикл статей по разработке модульной программы с применением BPL-пакетов.

Последний раз редактировалось Человек_Борща; 08.01.2015 в 14:41.
Человек_Борща вне форума Ответить с цитированием
Старый 08.01.2015, 14:45   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
BPL это компилированный DPK в режиме run-time пакета. Просто толаешь туда свои классы и модули, компилируешь, подключаешь к проекту и используешь в uses модули из BPL как если бы у тебя не было bpl.
Это теория, да огромное вам спасибо за внимание! Но, где почитать практически пример на него создание и использование как на скриншоте ?
xxbesoxx вне форума Ответить с цитированием
Старый 08.01.2015, 14:57   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Это теория, да огромное вам спасибо за внимание! Но, где почитать практически пример на него создание и использование как на скриншоте ?
Читайте сообщения целиком. Я аж 2 места назвал где по пунктам расписывается создание приложения на BPL-пакетах.
Человек_Борща вне форума Ответить с цитированием
Старый 08.01.2015, 15:20   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
На королевстве Delphi ,а так же у товарища GunSmoker'а на сайте, есть цикл статей по разработке модульной программы с применением BPL-пакетов.
Думаю что силка не запрещено на форуме . Пожалуйста выложите силка
Цитата:
Я аж 2 места назвал где по пунктам расписывается создание приложения на BPL-пакетах.
Пожалуйста выложите силка
xxbesoxx вне форума Ответить с цитированием
Старый 08.01.2015, 15:27   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://www.google.com.ua/search?hl=r...75.h9LD31gd1XY
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.01.2015, 22:36   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Каму не трудно помогите разобрать подгрузить bpl на форму и то формы который есть созданы bpl
1) Создаю bpl сохраняю отдельное папке у него два раздел (Contains) и (Requires).
2) разделе Contains выбираю контекстное меню Add New--> Form создаю формы. Все форму и юнит даю своего имя . и закрываю, все пакет я создал ...
3) Для примера у меня простои форма Form1 и на него 2 кнопка.
Вопрос:
на это форму хочу подгрузить это xxx.bpl и при нажатие эти кнопки вызвать эту форму который есть у этого xxx.bpl
Я тренирую на Delphi 2010 Но на данный момент без разница . главное что показали как подгрузить это bpl и вызвать это формы , что применять потом на практике ...
Изображения
Тип файла: jpg 01.jpg (118.5 Кб, 128 просмотров)
Тип файла: jpg 02.jpg (118.1 Кб, 126 просмотров)
Вложения
Тип файла: rar partnersBPL.rar (9.6 Кб, 26 просмотров)
Тип файла: rar Project.rar (300.2 Кб, 20 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 09.01.2015, 00:46   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Пакет подгрузил , Но форму как вызвать ?
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  FormScroll: TForm;
  FormClass: TFormClass;
  HandlePack: HModule;
begin
  HandlePack := LoadPackage ('partners.bpl'); //подгрузить пакет
  if HandlePack > 0 then
  begin
    FormClass := TFormClass(GetClass('TfrmCustomers'));  //   TfrmCustomers -это форма  который у BPL
  end;
  if Assigned (FormClass) then
  begin
    FormScroll := FormClass.Create(Application);
    try
      // Как вызвать форму   frmCustomers
    finally
      FormScroll.Free;
    end;
  end;
end;
Есть примеры в книге , Но функция SetPropValue не работает . Здесь тоже пример для старого Delphi http://www.marcocantu.com/code/md6htm/DynaPackForm.htm Но, на новом не работает это част кода
Код:
 SetPropValue (FormScroll, 'SelectedColor', Color);
        // show the form
        if FormScroll.ShowModal = mrOK then
          Color := GetPropValue (FormScroll, 'SelectedColor');
как добраться на то форму который у меня BPL е ? как его вызвать ?

Последний раз редактировалось xxbesoxx; 09.01.2015 в 00:55.
xxbesoxx вне форума Ответить с цитированием
Старый 09.01.2015, 01:16   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Пакет подгрузил , Но форму как вызвать?
Ты всё-таки скажи зачем тебе пакеты?
1. В твоем топике было написано:
Цитата:
Раньше работал на одном большом проекте , проект било на Delphi и там было несколько bpl файл проекте ... коротко сказали что преимущество этого bpl что не увеличить размер exe файл .... там на каждом bpl файле работал несколько человек. У каждого было разные задача...
Это явно подразумевается статическую загрузку пакета и в этом случае ничего делать особого не нужно. Программа использующая таким образом пакет(ы) пишется абсолютно также как и программа не использующая пакеты. Только в опциях проекта ставится галочка Build with runtime packages (то ли в Д2010, то ли в ДельфиХЕ название галочки уже поменяли, как и её значение) и в списке используемых пакетов указываются те самые пакеты.
2. Ты интересуешься принципом работы с плагинами.
Вот только в этом случае тебе понадобится динамическая загрузка пакета.

Последний раз редактировалось northener; 09.01.2015 в 01:19.
northener вне форума Ответить с цитированием
Старый 09.01.2015, 02:05   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Ты всё-таки скажи зачем тебе пакеты?
Мне интересно разобрать его . Что бы дальнейшем применять на практике
Цитата:
2. Ты интересуешься принципом работы с плагинами.
Вот только в этом случае тебе понадобится динамическая загрузка пакета.
Доброе ночи northener ну где я допускаю ошибку ?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  FormCust: TForm;
  AClass: TPersistentClass;
  HandlePack: HModule;
begin
  HandlePack := LoadPackage('partners.bpl'); // подгрузить пакет
  if HandlePack <> 0 then
  begin
    AClass := GetClass('TfrmCustomers'); // TfrmCustomers -это форма  который у BPL
    if AClass <> nil then
    begin
      FormCust := TComponentClass(AClass).Create(Application) as TForm;
      FormCust.ShowModal;

    end;

  end;
end;
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование cpp функции в проекте c tiger() Общие вопросы C/C++ 2 22.07.2013 16:06
Использование using namespace System в MFC проекте kluz Помощь студентам 0 06.06.2013 12:40
Использование С# dll в проекте C++ Romowski Visual C++ 5 11.12.2012 08:59
Использование методов из проекта на С++ в проекте на C# scailfon Общие вопросы .NET 7 06.06.2011 23:40
Создание и использование bpl shurik_7866 Общие вопросы Delphi 1 20.03.2010 11:27