首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

帮小弟我看下35600索引超出边界

2012-01-09 
帮我看下35600索引超出边界帮我看下这里写错了什么,总是35600索引超出边界,数据不能显示完全,排序不连贯,

帮我看下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

热点排行