powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / пакеты и регистрация класса
7 сообщений из 7, страница 1 из 1
пакеты и регистрация класса
    #39473690
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

давно ничего не писал. видимо выветрилось)


есть пакет bpl. в нем классы форм. в каждом юните registerclass в initialization
из основной программы класс создается через findclass

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

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

собственно как проинициализировать создание классов в пакете без указания его юнитов в основной программе


Спасибо
...
Рейтинг: 0 / 0
пакеты и регистрация класса
    #39473717
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
{$STRONGLINKTYPES ON} в dpr проекта может помочь. P.S. как минимум поможет через TRttiContext.FindType найти нужный класс.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
program Project2;

{$STRONGLINKTYPES ON}

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
...
Рейтинг: 0 / 0
пакеты и регистрация класса
    #39473804
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

Для d7 будет работать ?

Мысль пришла к такому. В пакете сделать в отдельном юните экспортируемую функцию, которая будет регистрировать все классы пакета.
В основной программе поиск пакета и вызов этой функции.
Вроде должно работать
...
Рейтинг: 0 / 0
пакеты и регистрация класса
    #39473806
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergq,

Не зная как там в твоей древней delphi. Но в новых, в модуле SysUtils есть функция loadpackage ... Которая в свою очередь вызывает Initialize
...
Рейтинг: 0 / 0
пакеты и регистрация класса
    #39473820
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшикsergq,

Не зная как там в твоей древней delphi. Но в новых, в модуле SysUtils есть функция loadpackage ... Которая в свою очередь вызывает Initialize
Приложение скомпилировано с использованием этого пакета. Вот только если в приложении указать конкретный юнит в uses от этого пакета- initialize юнита отрабатывает. Не указать- нет.
На что даже в хэлпе есть пояснение )
...
Рейтинг: 0 / 0
пакеты и регистрация класса
    #39473829
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergqX-Cite,
Для d7 будет работать ?


Не будет.
STRONGLINKTYPES появилась с версии XE
RTTI вроде с 2010
...
Рейтинг: 0 / 0
пакеты и регистрация класса
    #39473836
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergqНяшикsergq,

Не зная как там в твоей древней delphi. Но в новых, в модуле SysUtils есть функция loadpackage ... Которая в свою очередь вызывает Initialize
Приложение скомпилировано с использованием этого пакета. Вот только если в приложении указать конкретный юнит в uses от этого пакета- initialize юнита отрабатывает. Не указать- нет.
На что даже в хэлпе есть пояснение )

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure InitializePackage(Module: HMODULE; AValidatePackage: TValidatePackageProc);
type
  TPackageLoad = procedure;
var
  PackageLoad: TPackageLoad;
begin
  CheckForDuplicateUnits(Module, AValidatePackage);
  @PackageLoad := GetProcAddress(Module, 'Initialize'); //Do not localize
  if Assigned(PackageLoad) then
    PackageLoad
  else
    raise EPackageError.CreateFmt(sInvalidPackageFile, [GetModuleName(Module)]);
end;



Попробуй вызвать процедуру Initialize у пакета самостоятельно, получив HMODULE через GetModuleHandle.
Нехороший способ, но вдруг...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / пакеты и регистрация класса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]