德尔福2010和x27之间是否存在任何关键差异;s编译器和Delphi XE,可能导致EOS错误代码:1158

德尔福2010和x27之间是否存在任何关键差异;s编译器和Delphi XE,可能导致EOS错误代码:1158,delphi,delphi-2010,delphi-xe,Delphi,Delphi 2010,Delphi Xe,正如问题所示,我有一个应用程序,在Delphi 2010下构建后可以运行得非常好,但是如果它是在Delphi XE下编译的,我会得到错误: 项目xyz.exe引发异常类EOSRERROR,并显示消息“系统错误”。代码1158。当前进程已将其所有系统允许的句柄用于“窗口管理器对象” 错误发生在从SQL查询接收到大量数据之后,但奇怪的是,它只有在使用XE构建之后才会崩溃。我在2010年的环境中运行了FastMM,没有任何问题。不幸的是,我不能在XE中运行它,因为我只有一个编译器许可证,该许可证正在构

正如问题所示,我有一个应用程序,在Delphi 2010下构建后可以运行得非常好,但是如果它是在Delphi XE下编译的,我会得到错误:

项目xyz.exe引发异常类EOSRERROR,并显示消息“系统错误”。代码1158。当前进程已将其所有系统允许的句柄用于“窗口管理器对象”

错误发生在从SQL查询接收到大量数据之后,但奇怪的是,它只有在使用XE构建之后才会崩溃。我在2010年的环境中运行了FastMM,没有任何问题。不幸的是,我不能在XE中运行它,因为我只有一个编译器许可证,该许可证正在构建服务器上运行

我还检查了通过PERFMON使用的句柄数量,2010版本使用的句柄比XE版本多,没有问题


有什么好主意吗?

你太累了。FastMM在这方面帮不了你。您需要一个跟踪处理泄漏的工具。MadExcept4会帮你的。干杯,我会抓到一份副本并试一试。感谢你介绍我使用MadExcept4,结果发现我从查询结果中创建的对象每个都有2mb,所以几百个响应加起来占用了大量内存。XE检测到这一点仍然有点奇怪,但2010年未能检测到。不要羞于购买完整的商业ME产品,这真是太棒了。不幸的是,修复这一问题并没有解决我的错误,我仍然只有通过XE构建才能得到相同的错误,尽管2010很好。我现在还包含了一个函数,用于返回每个查询结果的句柄数,并将其固定为936个句柄,这很好。每个结果返回的消息框也相当慢。