Delphi 德尔福资源(GDIError)
我已经编写了一个应用程序,在其中我发现了局部错误 将TBitmap32保存到流时由图形单元的GDIError方法引发 据我所知,它可以来自gdi限制或堆限制。 我知道,对于进程,默认限制为10000个句柄。 因此,根据任务管理器,我的应用程序只报告了620个 我已下载并运行桌面堆信息监视工具,该工具报告了以下情况: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
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异常”调试器选项。也许您泄漏了位图句柄?我认为您应该发布相关代码。
无法翻译
(或者:这太无聊了,无法翻译),如中所述