我有一个单元定义TBla和初始化部分中的以下代码:
initialization
RegisterClass(TBla);
showMessage('registered');
Run Code Online (Sandbox Code Playgroud)
这个单元在一个包内.好.
在按钮上单击我的应用程序,我有以下代码:
LoadPackage('C:\temp\testes_packs\pack1\Package1.bpl');
pc := GetClass('TBla');
if pc = nil then
ShowMessage('didnt work');
Run Code Online (Sandbox Code Playgroud)
当我点击按钮时,会显示"已注册"消息.但是,'没有工作'也显示出来.这表示初始化被调用但由于某种原因寄存器类不起作用.
好的,为了证明LoadPackage是问题,我将我的单元(包含TBla类)直接包含在我的项目中并删除了loadPackage行,并且tada显示了'registered'消息并且getClass正常工作.
有任何想法吗?
Rob*_*edy 13
您的包需要在"需求"列表中包含"rtl"和"vcl".这样,类注册列表将是共享包中的列表,而不是您自己的包的私有列表.
此外,您的应用程序需要编译为使用运行时包.特别是,"rtl"和"vcl"包需要在其运行时包列表中.
如果不同时执行这两项操作,则一个模块使用的类注册列表将与另一个模块使用的列表不同.它们都必须使用相同的方法,并且这样做的方法是确保两个模块共享RTL公开的列表.
| 归档时间: |
|
| 查看次数: |
3958 次 |
| 最近记录: |