【问题标题】:Any ideas for Delphi XE can randomly not load design package?Delphi XE 的任何想法都不能随机加载设计包?
【发布时间】:2011-04-28 00:11:30
【问题描述】:

我创建了一个带有组件注册的设计包(组件本身在运行时)和一些 IDE 菜单项。

如果我从项目管理器的上下文菜单中单击“安装”菜单项 - 包将被加载并正常工作(始终)。

如果我关闭 IDE 并重新启动它 - 包可能被加载或可能不被加载。看似随意。但它通常不加载,而不是加载。

如果我去组件/安装包 - 我在列表中看到我的包,复选框被选中,“组件”按钮显示我的包中的组件,但包的可执行文件本身甚至没有加载到 IDE 中! (我已经通过 Process Explorer 验证了这一点)。重新安装(删除包 -> 确定 -> 组件/安装包 -> 添加 -> 确定)没有帮助。但是从项目管理器的项目上下文菜单中卸载/安装 - 总是有帮助的。

我已将 OutputDebugString 添加到包中每个模块的初始化部分。而且我发现初始化部分根本不运行。

运行时包与设计时包位于同一文件夹中。文件夹位于 PATH 环境变量中。我还尝试将包放在 Delphi 的 Bin 文件夹中。没有错误信息。没有奇怪/诊断性的 OutputDebugStrings。

有什么想法吗?

附:我在 2 台不同的机器上有这种行为。一个是Win7,另一个是WinXP SP 2。

附言我无法在 Delphi 7 上重现此行为。相同的包,总是为 D7 负载重新编译。

【问题讨论】:

    标签: delphi delphi-xe


    【解决方案1】:

    我发现新的 Delphi 具有延迟加载包的功能。这应该会优化启动速度,当包没有被加载,什么时候不需要。

    这适用于组件包,但会破坏(例如)修改 IDE 菜单的包的乐趣。

    您可以通过从 Register 过程调用 ForceDemandLoadState(dlDisable) 来告诉 IDE 始终加载您的包。

    附:为什么您总是在发布问题后几乎立即自己找到答案? :D

    【讨论】:

    • 因为在提问时你必须重新思考问题并与其他人交流——最终,你会从另一个角度看待问题。有时这就足够了。
    • 延迟的包加载似乎正是我的问题,但我在 Windows 10 上使用 Delphi 6,我似乎没有 ForceDemandLoadState 的可能性。 D6有类似的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多