Delphi 德尔福资源(GDIError)

Delphi 德尔福资源(GDIError),delphi,gdi,limits,eoutofresources,Delphi,Gdi,Limits,Eoutofresources,我已经编写了一个应用程序,在其中我发现了局部错误 将TBitmap32保存到流时由图形单元的GDIError方法引发 据我所知,它可以来自gdi限制或堆限制。 我知道,对于进程,默认限制为10000个句柄。 因此,根据任务管理器,我的应用程序只报告了620个 我已下载并运行桌面堆信息监视工具,该工具报告了以下情况: Desktop Heap Information Monitor Tool (Version 8.1.2925.0) Copyright (c) Microsoft Corporat

我已经编写了一个应用程序,在其中我发现了局部错误 将TBitmap32保存到流时由图形单元的GDIError方法引发

据我所知,它可以来自gdi限制或堆限制。 我知道,对于进程,默认限制为10000个句柄。 因此,根据任务管理器,我的应用程序只报告了620个

我已下载并运行桌面堆信息监视工具,该工具报告了以下情况:

Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation.  All rights reserved.
-------------------------------------------------------------
  Session ID:    0 Total Desktop: (  7360 KB -   11 desktops)

  WinStation\Desktop            Heap Size(KB)    Used Rate(%)
-------------------------------------------------------------
  WinSta0\Default                    3072             44.5
  WinSta0\Disconnect                   64              4.5
  WinSta0\Winlogon                    128             10.2
  Service-0x0-3e7$\Default            512             29.1
  Service-0x0-3e4$\Default            512              6.8
  Service-0x0-3e5$\Default            512              6.8
  SAWinSta\SADesktop                  512              0.5
  __X78B95_89_IW\__A8D9S1_42_ID       512              0.5
  Service-0x0-1ae39$\Default          512              2.4
  Service-0x0-12d284a7$\Default       512              2.5
  Service-0x0-1312b6d4$\Default       512             15.0
-------------------------------------------------------------
如上所述,我在winsta0中只使用了44%的桌面堆

除此之外,这一错误不时被提出。它从未达到上述极限。 如何检查问题所在?是什么导致出现此错误


谢谢

您可能有资源和/或内存泄漏

查找内存泄漏
如果您使用FastMM的调试版本,当程序关闭时,它将向您显示内存泄漏报告

下面的文章应该可以帮助您:

查找资源泄漏
请注意,虽然FastMM是查找内存泄漏的基本工具,但它不能查找资源泄漏。
AQTime可以找到这些,它有30天的试用期。请访问:

如果您想要开源资源泄漏工具,请尝试:


很好的搜索。

这可能根本不是资源错误。有时,Delphi会报告无法转换为特定错误消息的GDI错误,即资源不足。请参见Graphics.pas中GDIError的实现


如果你能在IDE中重现这一点,找出其发生位置/原因的最佳方法可能是在编译器设置中启用“使用调试DCUs”选项,并在运行应用程序时启用“停止Delphi异常”调试器选项。

也许您泄漏了位图句柄?我认为您应该发布相关代码。
无法翻译
(或者:这太无聊了,无法翻译),如中所述