对Delphi 6的大量文件支持?(更换系统模块?)

Rob*_*ler 3 delphi int64 large-data

我遇到了与巨大的固定长度记录数据文件交互的问题.该文件大小超过14 GB.我首先注意到一个问题,当我看到System.Filesize()函数的返回值远远小于大文件中的实际记录数时,给定文件中的字节数和每个记录的长度.(在给定Reset()调用期间指定的记录大小的情况下,System.Filesize返回无类型文件中的记录数.它不返回文件中的字节数).我把它System.Filesize()归结为Longint而不是Int64 的返回类型.

我通过调用GetFileSizeEx()和计算自己的记录数来解决最初的问题.不幸的是,BlockRead()当尝试访问文件中偏移量很深的文件时,也会失败.我猜再次使用的值正在代码中的某处溢出.

那里有Delphi 6的替换模块,可以处理大文件,是系统单元文件I/O调用的替代品吗?如果可以的话,我试图避免自己滚动.

RRU*_*RUZ 6

您可以使用GpHugeFile来自Primoz Gabrijelcic.我自己使用这个库从Delphi 7访问更大的文件(> 2gb).无论如何,在你的情况下你必须考虑尝试改变你的应用程序逻辑并迁移到数据库方案,这对于基于记录文件的方案来说效率要高得多.

  • 它的效率如何?在不知道记录结构的情况下,我们无法知道数据库是否更节省空间.对于固定大小的记录,搜索和遍历文件的时间效率不会低于数据库. (2认同)
  • 我不明白导致你推荐这个第三方代码的内置流类有什么问题. (2认同)