首页 > 解决方案 > TINiFile 的最大文件大小是多少?

问题描述

我的程序使用 TINiFile 操作一个 ini 文件。我读过TINiFile 类在单个部分中有 64kb 的限制。但是,在我的测试中,它似乎工作了超过 100kb。我正在使用 Delphi 10.3.3 和 Windows 10。

64kb 限制是否仅存在于旧版本的 Windows 中?或者,我应该使用 TMemIniFile 来保证安全吗?

标签: delphiinidelphi-10.3-rio

解决方案


GetPrivateProfileString基本上,对 ini 文件或例程(用于TIniFile读取数据)的大小没有限制。但是在使用时有一些限制和需要考虑的事情TIniFile

查看TIniFile实现的代码(感谢 Delphi),有几个地方GetPrivateProfileString用于从 ini 文件中检索数据。

TIniFile.ReadString缓冲区大小固定为 2048 (2k) 用于读取字符串值。由于所有其他“值”请求例程都使用此例程从 inifile 实际读取数据,因此它基本上限制了所有这些例程的缓冲区大小。

其次,该TIniFile.ReadSections例程使用 16384 (16k) 个字符的起始缓冲区。但是当这个缓冲区太小时,它会使用一个基于文件大小的动态缓冲区,所以这样你就不会遇到缓冲区问题(但是因为这实际上是读取整个文件来估计缓冲区大小,这将是大型ini文件非常慢)。

最后是TIniFile.ReadSection例程,它使用 1024 (1k) 的初始缓冲区大小。但在需要时动态分配更大的缓冲区。所以在这一点上,(文件)大小似乎也没有限制。

注意:此信息基于德里 10.3 和 Delphi XE2。在旧版本中,我们还有其他缓冲区分配策略......


推荐阅读