delphi - Delphi 6 支持大文件吗? (替换系统模块?)

标签 delphi int64 large-data

我在与巨大的固定长度记录数据文件交互时遇到问题。该文件大小超过 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/

相关文章:

r - ddply 在 R 中拆分大量类别的问题

delphi - 如何以编程方式设置我的 IP 地址?

delphi - 印地 9 与德尔福 : How to enable TLS 1. 0?

delphi - VertScrollBar.Visible 始终返回 TRUE

testing - 如何测试无符号 __int64 数字是否超出范围

php - 如何在不更改 max_allowed_pa​​cket 的情况下将大数据插入 MySQL 数据库

c - 使用大型本地数组: is there a faster way than malloc?

multithreading - 保护两个线程的字符串缓冲区?

c++ - 如何与 numeric_limits<int64_t>::min() 进行比较

go中int64的json解析;空值