TIniFile 的最大文件大小是多少?

What is the maximum file size for TIniFile?

我的程序使用 TIniFile 操作 ini 文件。我在单个部分中阅读了 TIniFile class has 64kb limit。但是,在我的测试中,它似乎可以处理超过 100kb 的文件。我正在使用 Delphi 10.3.3 和 Windows 10.

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

基本上,ini文件或例程GetPrivateProfileStringTIniFile用来读取数据)的大小没有限制。 但是在使用 TIniFile.

时有一些限制和需要考虑的事项

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

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

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

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

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