我正在瀏覽大部分應用程序並將它們移植到D2009,並且我有一個使用動態包的應用程序。對於我的生活,我無法讓我的主機應用程序識別在包中註冊的類。我追溯到被加載的包中的初始化部分被調用並且RegisterClasses被調用,但是當我執行GetClass()調用時,類不可用。有沒有人能夠啓發我可能發生的事情?我研究了一下,看看D2009版本和動態軟件包是否有問題,到目前爲止我什麼都沒有發現。我開始懷疑我的Delphi是否安裝損壞或其他問題。如何識別Delphi包中的註冊類
TIA
我正在瀏覽大部分應用程序並將它們移植到D2009,並且我有一個使用動態包的應用程序。對於我的生活,我無法讓我的主機應用程序識別在包中註冊的類。我追溯到被加載的包中的初始化部分被調用並且RegisterClasses被調用,但是當我執行GetClass()調用時,類不可用。有沒有人能夠啓發我可能發生的事情?我研究了一下,看看D2009版本和動態軟件包是否有問題,到目前爲止我什麼都沒有發現。我開始懷疑我的Delphi是否安裝損壞或其他問題。如何識別Delphi包中的註冊類
TIA
如果您正在使用第三方內存管理器,然後確保它被證明與D2009(實際上2007年及以上)工作。
隨着FastMM(這是默認的MM自2007年起),你就必須設置UseRuntimePackages定義FastMM4Options.inc
確保下列步驟完成:
過程TForm1.Button1Click(發信人:TObject的);
var
PackageModule:HModule; AClass:TPersistentClass;
開始
PackageModule:= LoadPackage( 'Package1.bpl');如果PackageModule <> 0,那麼 開始 AClass:= GetClass('TForm2');如果包模塊<> 0,則 開始
if AClass <> nil then
with TComponentClass(AClass).Create(Application)
as TCustomForm do
begin
ShowModal;
Free;
end;
UnloadPackage(PackageModule);
end;
end;
您是否重建過D2009中的主機和所有軟件包? 同時檢查您的主機是否使用運行時軟件包進行編譯。 – 2009-06-12 09:15:11