获取下标超出范围的字节数组
我正在使用Excel VBA读取二进制文件,然后获取字节数组的字节。 但是在第13行中得到下标超出范围的exception
Sub GetBinaryData() Dim aryBytes() As Byte Dim bytInput As Byte Dim intFileNumber Dim intFilePos intFileNumber = FreeFile Open "Binary.bin" For Binary As #intFileNumber intFilePos = 1 While Not EOF(intFileNumber) Get #intFileNumber, intFilePos, bytInput aryBytes(intFilePos) = bytInput ReDim aryBytes(UBound(aryBytes) + 1) intFilePos = intFilePos + 1 Wend Close #intFileNumber End Sub
它通过循环的第一行失败aryBytes(intFilePos)
试图访问不存在的aryBytes
元素1(它声明的dynamic&没有前面的ReDim
)
此外,EOF不会像您期望的二进制访问一样,请尝试使用LOF
这是一种逐字节的方式;
Open "Binary.bin" For Binary Access Read As #intFileNumber '//only need to dimension once ReDim aryBytes(LOF(intFileNumber) - 1) '//easier to count from zero intFilePos = 0 While intFilePos < LOF(intFileNumber) '//limit to Length-Of-File Get #intFileNumber, intFilePos + 1, bytInput aryBytes(intFilePos) = bytInput intFilePos = intFilePos + 1 Wend Close #intFileNumber
你也可以在一次阅读中做到这一点;
Open "Binary.bin" For Binary Access Read As #intFileNumber ReDim aryBytes(LOF(intFileNumber) - 1) Get #intFileNumber, , aryBytes Close #intFileNumber