1

我的应用程序是使用运行时包构建的,并使用该LoadPackage函数加载它们。然后它使用该GetClass函数获取类类型。

var
  MyClass : TPersistentClass;
begin
  if(LoadPackage('.\PackageA.bpl') = 0) then
    raise Exception.Create('Error loading PackageA.bpl');
  if(LoadPackage('.\PackageB.bpl') = 0) then
    raise Exception.Create('Error loading PackageB.bpl');

  MyClass := GetClass('TMyClass');
end;

有什么方法可以获取包的名称来自哪个MyClass

4

1 回答 1

3

使用 RTL 的FindClassHInstance()函数来获取拥有GetClass()返回的类类型的已加载包的句柄。这将与LoadPackage()返回的句柄相同。

您可以自己跟踪加载的包句柄,也可以将句柄传递给 Win32 APIGetModuleFileName()函数以查询句柄以获取其包的路径和文件名。

于 2019-03-15T18:22:47.700 回答