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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2019, 06:06   #11
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
Вопрос

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
На .bpl-е создаем форму и потом Edit'ов и все что нужно. Потом: чтобы "программа" работал на другом ПК надо копировать из C:\Users\Public\Documents\RAD Studio\10.0\Bpl тот bpl=который вы создали и + rtl_xx; vcl_xx; и вставить на С:\Windows\SysWOW64
Благодарю за ответы и помощь, вроде все получилось!
Есть еще вопросы некоторые.
Когда пакет загружается через LoadPackage, то он же грузится в адресное пространство программы и поэтому я не могу перезаписать свою bpl пока она загружена и пока программа работает.
Правильно ли я понял?
Как сделать, чтобы пакет загрузился, но, потом я бы мог перезаписать bpl новой версией, без закрытия программы?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.06.2019, 15:42   #12
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Как сделать, чтобы пакет загрузился, но, потом я бы мог перезаписать bpl новой версией, без закрытия программы?
без закрытия программы некак.! На пример есть на одну .bpl несколько форма - Edit-ов Button-и ... и.т.г и требуется менять код или вносить изменения, добавить что то...
1) надо перекомпилировать тот .bpl на Delphi и потом копировать его и переписать на другом ПК
2) .bpl может будет несколько в проекте и на каждом .bpl работаеть разние программист и если он НЕ будеть перекопилировать свой .bpl не увидить то изменение который он внедрил проекте....
3) его применяют компаный когда они нанимають программистов и у каждого программистов свой .bpl и он работаеть на него... потом кто там "старший программист" или как они себя называют Забирает его и подключаеть своего проекту ....
4) в общем нужное штука когда проект очень большой....
-- Когда то: 08.01.2015 мне тоже пришлось разбираться начиналь постит на форуме https://www.programmersforum.ru/showthread.php?t=271436
artemavd Удачного и успешного вам рабочего дня

Последний раз редактировалось xxbesoxx; 14.06.2019 в 15:47.
xxbesoxx вне форума Ответить с цитированием
Старый 15.06.2019, 17:26   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
без закрытия программы некак.! На пример есть на одну .bpl несколько форма - Edit-ов Button-и ... и.т.г и требуется менять код или вносить изменения, добавить что то...
1) надо перекомпилировать тот .bpl на Delphi и потом копировать его и переписать на другом ПК
2) .bpl может будет несколько в проекте и на каждом .bpl работаеть разние программист и если он НЕ будеть перекопилировать свой .bpl не увидить то изменение который он внедрил проекте....
3) его применяют компаный когда они нанимають программистов и у каждого программистов свой .bpl и он работаеть на него... потом кто там "старший программист" или как они себя называют Забирает его и подключаеть своего проекту ....
4) в общем нужное штука когда проект очень большой....
-- Когда то: 08.01.2015 мне тоже пришлось разбираться начиналь постит на форуме https://www.programmersforum.ru/showthread.php?t=271436
artemavd Удачного и успешного вам рабочего дня
Благодарю за информацию! Приму к сведению.
А такой вопрос, наверно, один из последних.
Как мне обратиться к глобальным переменным формы основного приложения, из которого была открыта форма, которая находится в BPL?
То есть, когда я загрузил свой BPL и открылась из него форма, то как мне обратиться к глобальным переменным, которые находятся в главной программе?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.06.2019, 23:53   #14
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
То есть, когда я загрузил свой BPL и открылась из него форма, то как мне обратиться к глобальным переменным, которые находятся в главной программе?
Если форм-и находится на одну BPL то просто надо подключить тот модуль где объявлен переменное чтобы его применять на другом форме.
Изображения
Тип файла: jpg P_1.jpg (119.7 Кб, 137 просмотров)
Тип файла: jpg P_2.jpg (123.8 Кб, 134 просмотров)
Тип файла: jpg P_3.jpg (120.1 Кб, 142 просмотров)
Тип файла: jpg P_4.jpg (106.5 Кб, 128 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 16.06.2019, 06:39   #15
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Если форм-и находится на одну BPL то просто надо подключить тот модуль где объявлен переменное чтобы его применять на другом форме.
Не, я, наверное, не так объяснил. Сейчас попробую ещё раз. Смотрите. Дело в том, что у меня когда на кнопку нажимаешь, в главной программе, то грузится bpl с формами и т.п. составом. В главной программе у меня есть есть модуль с глобальным переменными, которые доступны через DataModule.<Имя глобальной переменной> всей главной программе. Так вот, когда мой bpl с формами загружен, то мне нужно, чтобы эти формы, хранящиеся в bpl, тоже имели доступ к глобальным переменным главной программы через DataModule.<Имя глобальной переменной>. Так понятнее? Представьте, что в основной программе у меня есть некая с роковая переменная и мне нужно передать (или получить) значение этой с роковой переменной в форме, которая открылась из bpl. Без прописывания на этапе разработки главной программы в разделе uses имена форм, которые хранятся в bpl
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 16.06.2019, 08:02   #16
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

1. чисто Delphi
передать BPL функцию определения констант-настроек.

Код:
function GetNastr: integer;//TGlobalNastr;....   
function GetNastr(namstrname: string): string;
function GetNastrText: string;

bpl.setfunc_nastr(mainproc.GetNastr);
и ЕЕ использование внутри BPL
Код:
type
  TfuncGetNastr = function: integer; //описание соотв. процедурного типа
var
  GetNastr: TfuncGetNastr;
  
procedure SetNastr(f: TfuncGetNastr);
begin
  GetNastr:=f;
end;

procedure XXXX;
begin
...
  myglobnastr:=GetNastr;
...
end;
2. все тоже только вместо процедурного типа интерфейс.

3. все тоже но ПЕРЕДАВАТЬ какой-то известный объект.
известен bpl может быть объект с абстрактными методами, но
передаваться должен объект с переопределенными (имеющими реализацию).
по сути тот же интефейс.

использовать общие глобальные объекты
Application
Forms
DataModules
для обнаружения объекта хранящего настройки
Цитата:
В главной программе у меня есть есть модуль с глобальным переменными, которые доступны через DataModule.
и считывания
Код:
if DataModules.<Items>[j] is TDataModuleGlobalNastr then 
dmnastr:=DataModules.<Items>[j] as TDataModuleGlobalNastr
<Items> = свойство DataModules отвечающее за перечисление имеющихся (созданных) объектов во время РАБОТЫ программы.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось artemavd; 16.06.2019 в 12:18.
evg_m на форуме Ответить с цитированием
Старый 16.06.2019, 11:20   #17
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Не, я, наверное, не так объяснил. Сейчас попробую ещё раз. Смотрите. Дело в том, что у меня когда на кнопку нажимаешь, в главной программе, то грузится bpl с формами и т.п. составом. В главной программе у меня есть есть модуль с глобальным переменными, которые доступны через DataModule.<Имя глобальной переменной> всей главной программе. Так вот, когда мой bpl с формами загружен, то мне нужно, чтобы эти формы, хранящиеся в bpl, тоже имели доступ к глобальным переменным главной программы через DataModule.<Имя глобальной переменной>. Так понятнее?
Вопрос понятно.! Я его не разобрался. Вот здесь конца теме https://edn.embarcadero.com/article/27178 объяснять как это делать...
xxbesoxx вне форума Ответить с цитированием
Старый 16.06.2019, 12:31   #18
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
1. чисто Delphi
передать BPL функцию определения констант-настроек.

Код:
function GetNastr: integer;//TGlobalNastr;....   
function GetNastr(namstrname: string): string;
function GetNastrText: string;

bpl.setfunc_nastr(mainproc.GetNastr);
и ЕЕ использование внутри BPL
Код:
type
  TfuncGetNastr = function: integer; //описание соотв. процедурного типа
var
  GetNastr: TfuncGetNastr;
  
procedure SetNastr(f: TfuncGetNastr);
begin
  GetNastr:=f;
end;

procedure XXXX;
begin
...
  myglobnastr:=GetNastr;
...
end;
2. все тоже только вместо процедурного типа интерфейс.

3. все тоже но ПЕРЕДАВАТЬ какой-то известный объект.
известен bpl может быть объект с абстрактными методами, но
передаваться должен объект с переопределенными (имеющими реализацию).
по сути тот же интефейс.

использовать общие глобальные объекты
Application
Forms
DataModules
для обнаружения объекта хранящего настройки

и считывания
Код:
if DataModules.<Items>[j] is TDataModuleGlobalNastr then 
dmnastr:=DataModules.<Items>[j] as TDataModuleGlobalNastr
<Items> = свойство DataModules отвечающее за перечисление имеющихся (созданных) объектов во время РАБОТЫ программы.
Как-то сложно...Без примера мне сложно будет понять, конечно...((

Можете примерчик тестовый кинуть? Я по нему пойму. Я думал, что это просто можно было сделать: загрузить BPL, вызвать из него форму, которая бы получила значение из DataModule основной программы.

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Если форм-и находится на одну BPL то просто надо подключить тот модуль где объявлен переменное чтобы его применять на другом форме.
Мне нужно, чтобы, если смотреть Ваш пример, Unit2 получало значения не только с BPL, а с самого главного приложения, которое загрузило эту саму BPL. Ведь я же создаю через GetClass форму из BPL, вот, при этом мне надо передать некое глобальное значение из главной программы в форму, в этой только что загруженной BPL.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 16.06.2019 в 16:52.
artemavd вне форума Ответить с цитированием
Старый 16.06.2019, 21:43   #19
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Мне нужно, чтобы, если смотреть Ваш пример, Unit2 получало значения не только с BPL, а с самого главного приложения, которое загрузило эту саму BPL.
Смотрите как всё просто так получается и работает.
Изображения
Тип файла: jpg 1_.jpg (122.0 Кб, 161 просмотров)
Тип файла: jpg 2.jpg (120.2 Кб, 166 просмотров)
Тип файла: jpg 3.jpg (121.7 Кб, 165 просмотров)
Тип файла: jpg 4.jpg (123.0 Кб, 163 просмотров)
Тип файла: jpg 5.jpg (120.4 Кб, 151 просмотров)
Тип файла: jpg 6.jpg (123.6 Кб, 163 просмотров)
Тип файла: jpg 7.jpg (120.1 Кб, 167 просмотров)
Тип файла: jpg 8.jpg (114.5 Кб, 157 просмотров)
Тип файла: jpg 9.jpg (111.3 Кб, 165 просмотров)
xxbesoxx вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка функции из dll, как победить RunTime Winexcel Общие вопросы Delphi 4 01.07.2014 13:40
Доступ к переменным Aleksandr_59 Общие вопросы Delphi 10 13.04.2012 12:57
Вопрос по переменным ronston Общие вопросы C/C++ 6 06.10.2010 10:27
Runtime runtime = Runtime.getRuntime(); Pti44ka Общие вопросы по Java, Java SE, Kotlin 1 22.11.2009 10:45
Доступ к переменным RealSHELS Общие вопросы Delphi 4 15.06.2008 13:14