首页 > 解决方案 > 从 VB6/VBA/VBScript 读取大型二进制文件

问题描述

我试图让一个老式的 VB6 应用程序来读取一个大(大于 2GB)的二进制文件。我将缓冲区声明为:

Dim TCBuffer as String
TCPBuffer = String(4096, Chr(0))

并使用以下方法循环读取数据:

Get #FileNum, , TCPBuffer

但是一旦当前位置达到 2GB,上面的行就会引发错误。

运行时错误“63”:

不良记录编号

所以我想知道使用它Scripting.FileSystemObject。但是,这个对象似乎非常有限。一方面,您似乎只能创建和打开文本文件。

关于如何从 VB6 读取大型二进制文件的任何建议?

更新:

再考虑一下,另一种选择是使用 API 函数。但这里 VB6 的真正限制之一是缺少无符号数据类型。所以即使使用 API 函数也是一个技巧。

标签: vbavbscriptvb6

解决方案


我最终创建了一个在内部使用 Windows API 的文件类。

任何接受或返回文件大小或偏移量的函数都是Double. 一小段代码将该值与无符号长整数进行转换,即使它在Long传递给 API 时必须以有符号形式存储(因为 VB6/VBA 不支持无符号长整数)。


推荐阅读