我在与巨大的固定长度记录数据文件交互时遇到问题。该文件大小超过 14 GB。当我看到 System.Filesize() 函数的返回值远小于大文件中的实际记录数(考虑到文件中的字节数和每条记录的长度。 (System.Filesize 返回非类型化文件中的记录数(给定 Reset()
调用期间指定的记录大小)。它不返回文件中的字节数)。我将其归因于 System.Filesize()
的返回类型是 Longint 而不是 Int64。
我通过调用 GetFileSizeEx()
并自己计算记录数解决了最初的问题。不幸的是,当尝试访问文件中偏移量深入文件的记录时,BlockRead()
也会失败。我猜测代码中的某个地方再次使用了溢出的值。
Delphi 6 是否有一个替代模块可以处理大文件并且可以替代系统单元文件 I/O 调用?如果可以的话,我会尽量避免自己动手。
最佳答案
您可以使用GpHugeFile
来自Primoz Gabrijelcic 。我自己使用这个库从 Delphi 7 访问更大的文件(> 2GB)。无论如何,在您的情况下,您必须考虑尝试更改应用程序逻辑并迁移到数据库方案,该方案比基于记录文件的方案要高效得多。
关于delphi - Delphi 6 支持大文件吗? (替换系统模块?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6051364/