我有一个单元至极限定TBLA和在初始化部分中的以下代码:

initialization
  RegisterClass(TBla);
  showMessage('registered');

此单元为一个包内。确定。

在一个按钮点击我的应用程序我有以下代码:

  LoadPackage('C:\temp\testes_packs\pack1\Package1.bpl');
  pc := GetClass('TBla');
  if pc = nil then
    ShowMessage('didnt work');

当我点击按钮的“注册”消息显示出来。但是,“没有工作”也表示。这表明,被称为初始化沃斯但由于某种原因寄存器类别没有工作。

确定,以证明该LoadPackage是问题,我包括我的单元(包含TBLA类)直接到我的项目和除去loadPackage线和,多田的“注册”消息显示和的getClass工作

任何想法?

有帮助吗?

解决方案

您包需要包括在其“需要”列表“RTL”和“VCL”。这样,类登记名单将是一个共享包,而不是仅对您自己的包。

此外,您的应用程序需要被编译为使用运行时包。特别地,“RTL”和“VCL”的包必须是其运行时包的列表上。

如果没有这样做既那些东西,由一个模块所使用的类登记列表将不与由其它模块使用的列表。它们都必须使用同一个,而做到这一点的方式,以确保两个模块都共享由RTL公开的列表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top