Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 07.08.2022
Сообщений: 13
Delphi 6-7

Как вызвать экспорт класса из BPL?

13.08.2022, 08:57. Показов 1945. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Подскажите как правильно использовать экспорт метода
из BPL, при условии, что он является методом класса?
...
Библиотека вызывается динамически, без использования
флажка "Сборка с пакетами времени выполнения",
иначе, как я понимаю она будет подвязана к EXE и
сам EXE без неё даже не запустится.
BPL должна быть независима.
Мне следует отправлять на экспорт
не сам метод, а весь класс?. Но как это сделать?
Вот модуль из библиотеки...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
unit SetMethods;
 
interface
 
uses
 Windows, Forms, Classes, SysUtils, Dialogs;
 
type
 {$MethodInfo ON}
  TWorkForm = class(TForm)
  published
    procedure MyClick;
  end;
 {$MethodInfo OFF}
 
// Exports MyClick; ???
 
implementation
 
procedure TWorkForm.MyClick;
begin
 ShowMessage('Событие из библиотеки.');
end;
 
initialization
  RegisterClass(TWorkForm);
 
end.
А теперь про вызов из EXE:
Вот так можна вызвать обычный метод и он нормально компилируется и отрабатывает.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
 H_BPL: THandle;
begin
 H_BPL:= LoadPackage(GLOBAL_PATH+'\BPL\Methods.bpl');
 if H_BPL = 0 then
  begin
   ShowMessage('Ошибка при загрузке пакетной библиотеки "Methods.bpl"');
   Exit;
  end;      
 P^.Event_.Code:= GetProcAddress(H_BPL, 'MyClick');
 if P^.Event_.Code = nil then
  begin
   ShowMessage('Метод отсутствует');
   UnloadPackage(H_BPL);
   Exit;
  end;
 P^.Event_.Data:= P^.Komp_;
 SetMethodProp(P^.Komp_, P^.Prop_, P^.Event_);
end;
А вот так я пытаюсь обратиться к классу TWorkForm
и использовать его метод "MyClick":
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
 K: TComponentClass;
begin
 if FindClass('TWorkForm') <> nil then // или Assigned(FindClass('TWorkForm'))
  begin
   K:= TComponentClass(FindClass('TWorkForm'));
   //
   P^.Event_.Code:= K.MethodAddress('MyClick');
   P^.Event_.Data:= P^.Komp_;
   SetMethodProp(P^.Komp_, P^.Prop_, P^.Event_);
  end
 else
  begin
   ShowMessage('Класс "TWorkForm" не найден.');
  end;
end;
Компиляция проходит успешно, но класс "TWorkForm" не находит.
Процедура регистрации указана в библиотеке.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2022, 08:57
Ответы с готовыми решениями:

Как асинхронно через объект класса вызвать функцию класса?
Есть класс с именем Script с функцией run_task Я хочу вызвать функцию класса асинхронно несколько раз через объект класса Единственными...

Как из метода производного класса вызвать поле родительского класса
Добрый день! Помогите пожалуйста вызвать поле базового класса из метода производного класса. Код, составленный мною выводит результат...

Как правильно вызвать метод класса внутри самого класса?
Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри самого класса? Насколько я знаю, для...

20
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
13.08.2022, 23:10
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от _Zeron_ Посмотреть сообщение
Не слишком ли большая цена за Unicode, Class Helpers, Дженерики и новый RTTI ?
нормальная))))


0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2022, 23:10

Как вызвать метод класса в другом методе этого же класса?
&lt;? class load_files{ public function traverse_hierarchy($path) { // from...

Как в методе класса вызвать другой метод того же класса?
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)

Как вызвать метод вложенного класса в методе родительского класса
Имеется родительский класс для прорисовки графики Jogj package objects; import com.jogamp.opengl.GL2; import...

Как в классе А у объекта класса B вызвать метод класса B ?
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же классе есть метод push() . Возможно ли...

Как из одного класса вызвать функцию другого класса
Добрый день. Подскажите пож. как из одного класса вызвать функцию другого класса. // file1.h // #include &lt;file2.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru