vb下标越界错误

来源:百度知道 编辑:UC知道 时间:2024/05/03 00:43:41
这是一个自定义过程,它的作用是从数据文件中读出密码(解码过程是把读出的数字,减去1再除以3,作为ascii,并转换成相应字符,最后把字符串成字符串作为密码)。奇怪的是经测试,数组下标为1~3,循环变量i取值为1~3,但是第一次循环就弹出“下标越界”错误,注释掉后,在下一个出现数组的地方还是下标越界错误。(if的两个分支作用一样,我调试是在else中进行的,所以在这里出现的问题写在了else中,前一个分支也存在同样的问题。)
如果是这种读取数据文件的方法错误,请赐教应该怎么做?(密码长度为0~16位,不确定)
代码如下:

Public Sub readcode(ISad As Boolean, code As String)
Dim filenum1%, filenum2%, endflag%, i%, codelength%
Dim codearry() As Integer '问题就在这个数组上

If ISad Then
filenum1 = FreeFile
Open App.Path + "\adcode.dat" For Input As filenum1
codelength = LOF(filenum1) / 5 '这里是不是除以5还不确定。不太懂~
Close

ReDim codearray(codelength) '根据得到的密码长度,重新定义密码数组的长度。

Open App.Path + "\adcode.dat" For Input As filenum1 '将加密后的ascii码读出,存入密码数组变量。
For i = 1 To codelength
Input #filenum1, c

ReDim codearray(codelength) '根据得到的密码长度,重新定义密码数组的长度。
问题出在这两处redim上,codearray,而你后面的代码中用的是codearry,差一个字母,看到了吗?

数组定义的下标范围都是从0到(n-1)的呀!
你可以试试修改一下循环时的数组下标,从零开始...

For i = 0 To codelength - 1