1. 程式人生 > >Delphi exe動態呼叫載入bpl 報地址錯誤的解決方法

Delphi exe動態呼叫載入bpl 報地址錯誤的解決方法

載入bpl:

  ModuleInstance1: HMODULE;

  ModuleInstance1 := LoadPackage('TestA.bpl');

顯示視窗:

var
  frm: TCustomForm;
begin
  frm := CreateFormByClassName('TTestForm');
  try
    frm.ShowModal;
  finally
    frm.Release;
  end;
end;

function CreateFormByClassName(const ClassName: string): TCustomForm;
var
  AClass: TPersistentClass;
begin
  AClass := GetClass(ClassName);
  If AClass = nil then
    exit;
  Result := TComponentClass(AClass).Create(Application) as TCustomForm;
  // 或Result:=TCustomForm(TComponentClass(AClass).Create(Application));
end;

------------------------------------------------------------------------------------------------------------------------

問題出現在取值AClass時總提示為nill,

原因可能為:主程式exe沒有勾選 build with run package