我正在浏览大部分应用程序并将它们移植到D2009,我有一个使用动态包的应用程序。对于我的生活,我无法让我的主机应用程序识别在包中注册的类。我跟踪并调用了正在加载的包中的初始化部分并调用了RegisterClasses但是当我执行GetClass()调用时,这些类不可用。是否有人可以告诉我可能发生的事情?我已经研究过并查看D2009版本和动态软件包是否存在任何问题,到目前为止我一无所获。我开始怀疑我是否有一个损坏的Delphi安装或其他一些问题。
TIA
答案 0 :(得分:2)
如果您使用的是第三方内存管理器,请确保它已经证明适用于D2009(实际上是2007及以上版本)。
使用FastMM(自2007年以来的默认MM),您必须在FastMM4Options.inc中设置UseRuntimePackages定义
答案 1 :(得分:0)
确保完成以下步骤:
程序TForm1.Button1Click(发件人:TObject);
VAR
PackageModule:HModule; AClass: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);
端;
端;