我正在浏览我的大部分应用程序并将它们移植到 D2009,并且我有一个使用动态包的应用程序。对于我的生活,我无法让我的主机应用程序识别包中注册的类。我跟踪并调用了正在加载的包中的初始化部分并调用了 RegisterClasses,但是当我调用 GetClass() 时,这些类不可用。有没有人可以启发我了解可能发生的事情?我已经研究并查看了 D2009 版本和动态软件包是否存在任何问题,但到目前为止我一无所获。我开始怀疑我的 Delphi 安装是否损坏或其他问题。
TIA
如果您使用的是第 3 方内存管理器,请确保它已被证明可以与 D2009(实际上是 2007 及更高版本)一起使用。
使用 FastMM(这是自 2007 年以来的默认 MM),您必须设置在 FastMM4Options.inc 中定义的 UseRuntimePackages
确保完成以下步骤:
过程 TForm1.Button1Click(Sender: TObject);
变量
包模块:HModule;A类:TPersistentClass;
开始
PackageModule := LoadPackage('Package1.bpl');
如果 PackageModule <> 0 则开始 AClass := GetClass('TForm2');
if AClass <> nil then
with TComponentClass(AClass).Create(Application)
as TCustomForm do
begin
ShowModal;
Free;
end;
UnloadPackage(PackageModule);
结尾;
结尾;