【发布时间】:2020-03-06 19:12:17
【问题描述】:
我正在开发一个 Delphi 4 应用程序(不要问我为什么,我已经知道它太老了但我不得不这样做,解释起来更复杂,只是老板的要求)。
这个 Delphi 应用程序在执行时创建了很多 *.MB 文件(现在一切都很好),它使用了很多 TQueries、TUpdatesSQL、TDataSource,所以我想这很正常。但是当我关闭这个应用程序时,这些文件应该被删除(但没有),然后当我第二次打开这个应用程序(第三次、第四次等)时,它会创建越来越多的 *.MB 文件,最后以错误结束: “打开的文件太多。您可能需要在 IDAPI 配置中增加 MAXFILEHANDLE 限制”
我刚刚在互联网上发现您必须在以下位置增加 MaxFileHandles(我的值为 48):
BDE Administrator:
Configuration->System->INIT->MAXFILHANDLES
这是唯一的解决方案吗?或者还有一个? 任何人都可以给我一个提示,或者在应用程序关闭时删除这些文件的提示吗?
【问题讨论】:
-
“应该删除(但没有)”中的“(但没有)”是什么意思?在 BDE 配置中增加文件句柄的数量只会延迟问题的发生,而不是解决问题。确保您的应用在关闭之前关闭所有打开的数据集(TQueries 和 TTables)(并确保在您的项目打开时 IDE 中没有打开的数据集)。然后,如果你真的想删除数据文件,你可以使用 SysUtils 单元上的 DeleteFile 函数。
-
谢谢你的回复,对不起,我的英文不好,我只想说那些文件应该删除,但他们没有
-
除非您采取特定步骤删除它们,否则它们不会被删除。仅关闭 TTable 或 TQuery 不会删除磁盘上的数据文件。顺便说一句,请参阅在线帮助中的 TTable.DeleteTable 和 .DeleteIndex。
-
您可以编写代码在您的应用关闭时删除它们。更改文件句柄的最大数量并不能解决问题,就像在仪表板上贴一块胶带以隐藏 检查引擎 灯一样可以防止您崩溃。