【发布时间】:2018-02-03 20:43:47
【问题描述】:
我的应用程序动态加载提供我需要的对象实现的包。我有一个全局函数来在列表结构上注册对象类,我用它来动态创建实例。
procedure RegisterObjectStd(const APackageName, AObjectName: string; const AClass: TClass);
因此我可以通过工厂方法创建一个引用特定上下文的实例
例子:
function CreateObject(const APackageName, AObjectName: string): TObject;
有没有办法在我的初始化代码中动态检索当前包 (.bpl) 的名称?
initialization
RegisterObjectStd(GetCurrentBplName, 'MyObjectName', TMyObjectClass);
【问题讨论】:
-
GetModuleName(HInstance)呢? -
获得的文件名可能不等于包名。一个很好的例子是版本化的包。例如,名为
rtl的包可能具有类似rtl210.bpl的文件名。
标签: delphi initialization package