Delphi XE有时无法随机加载设计包,有什么想法吗?

6
我已经创建了一个带有组件注册的设计包(组件本身在运行时),还加入了一些IDE菜单项。
如果我点击“安装”菜单项,设计包将被加载并正常工作(始终如此)。
如果我关闭IDE并重新启动它,设计包可能会被加载或者可能不会被加载。看起来是随机的,但通常不会被加载,然后才会被加载。
如果我到“组件/安装包”中,我会在列表中看到我的包,复选框已选中,“组件”按钮显示我的包中的组件,但是包的可执行文件本身甚至没有被加载到IDE中!(我已经通过进程资源管理器验证了这一点)。通过卸载/安装项目管理器中的上下文菜单总是有用的,而重新安装(删除包 -> 确定 -> 组件/安装包 -> 添加 -> 确定)不能解决问题。
我已经在包的每个模块的初始化部分添加了OutputDebugString。我发现初始化部分根本没有运行。
运行时包与设计时包位于同一个文件夹中。该文件夹在PATH环境变量中。我也尝试将软件包放置在Delphi的Bin文件夹中。没有错误消息。没有奇怪/诊断性的OutputDebugStrings。
你有什么想法吗?
附言:我在两台不同的机器上都遇到了这种行为。一台是Win7,另一台是WinXP SP2。
再附言:我无法在Delphi 7中复现这种行为。相同的软件包,重新编译为D7总是能够加载。
1个回答

9
我发现新版的Delphi有延迟包加载功能。这应该优化启动速度,当不需要加载包时,它们不会被加载。
这对于组件包来说很好用,但对于修改IDE菜单的包来说则无法实现。
你可以在Register过程中调用ForceDemandLoadState(dlDisable)来告诉IDE始终加载你的包。
附注:为什么你总是在发布问题后几乎立即找到答案呢? :D

2
因为在提问时,你必须重新思考问题以便将其传达给其他人 - 最终,你会从另一个角度看到这个问题。有时这已经足够了。 - Fabricio Araujo
延迟加载包似乎正是我的问题,但我在Windows 10上使用Delphi 6,似乎没有ForceDemandLoadState选项。D6中是否有类似的功能? - AndersJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接