帮我看下35600索引超出边界
帮我看下这里写错了什么,总是35600索引超出边界,数据不能显示完全,排序不连贯,帮我看下,谢谢
Private Sub Command11_Click()
Dim filename
If Winsock1(ListView1.SelectedItem.Index).State <> sckClosed Then
filename = InputBox( "请选择本地文件名 ")
If filename = " " Then
MsgBox "请输入文件名 "
GoTo exi:
End If
Dim FreeF As Integer
Dim LenFile As Long '文件的长度
Dim bytData() As Byte '存放数据的数组
Dim ipos As Long
Const imax = 65535
FreeF = FreeFile '获得空闲的文件号
Open filename For Binary As #FreeF '打开文件
DoEvents
LenFile = LOF(FreeF) '获得文件长度
If LenFile <= imax Then '如果要发送的文件小于数据块大小,直接发送
ReDim bytData(1 To LenFile) '根据文件长度重新定义数组大小
Get #FreeF, , bytData '把文件读入到数组里
Close #FreeF '关闭文件
Winsock1(ListView1.SelectedItem.Index).SendData bytData '发送数据
Exit Sub
End If
'文件大于数据块大小,进行分块发送
Do Until (ipos > = (LenFile - imax)) '发送整块数据的循环
ReDim bytData(1 To imax)
Get #FreeF, ipos + 1, bytData
Winsock1(ListView1.SelectedItem.Index).SendData bytData
ipos = ipos + imax '移动iPos,使它指向下来要读的数据
Loop
'这里要注意的是,必须检查文件有没有剩下的数据,如果文件大小正好等于数据块大小的
' 整数倍,那么就没有剩下的数据了
ReDim bytData(1 To LenFile - ipos) '发送剩下的不够一个数据块的数据
Get #FreeF, ipos + 1, bytData
Winsock1(ListView1.SelectedItem.Index).SendData bytData
Close #FreeF
End If
exi:
End Sub
[解决办法]
索引超出边界,应该是与数组操作有关系,我估计是存取数组元素时发生了问题
例如:
dim arrX(0 to 1) as long
如果arrx(2)=100就会说索引超出边界
如果debug.print arrx(2)也会说索引超出边界
[解决办法]
索引超出边界,是索引值的问题,你把你的索引值的最大和最小值减1,试试。另外看看下面的问题,或许能够有所启示。
http://topic.csdn.net/t/20050303/12/3821009.html#
http://topic.csdn.net/t/20020813/15/937192.html
http://zhidao.baidu.com/question/5138262.html