Rob*_*ler 3 delphi int64 large-data
我遇到了与巨大的固定长度记录数据文件交互的问题.该文件大小超过14 GB.我首先注意到一个问题,当我看到System.Filesize()函数的返回值远远小于大文件中的实际记录数时,给定文件中的字节数和每个记录的长度.(在给定Reset()调用期间指定的记录大小的情况下,System.Filesize返回无类型文件中的记录数.它不返回文件中的字节数).我把它System.Filesize()归结为Longint而不是Int64 的返回类型.
我通过调用GetFileSizeEx()和计算自己的记录数来解决最初的问题.不幸的是,BlockRead()当尝试访问文件中偏移量很深的文件时,也会失败.我猜再次使用的值正在代码中的某处溢出.
那里有Delphi 6的替换模块,可以处理大文件,是系统单元文件I/O调用的替代品吗?如果可以的话,我试图避免自己滚动.
您可以使用GpHugeFile来自Primoz Gabrijelcic.我自己使用这个库从Delphi 7访问更大的文件(> 2gb).无论如何,在你的情况下你必须考虑尝试改变你的应用程序逻辑并迁移到数据库方案,这对于基于记录文件的方案来说效率要高得多.