| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7056 人关注过本帖
标题:[求助]vb数组下标越界
取消只看楼主 加入收藏
ivan79
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-10
收藏
 问题点数:0 回复次数:5 
[求助]vb数组下标越界

我是个初学者,最头大的问题是,vb中数组的下标越界问题。
哪位高手高手高高手能提供一个全面的解决方案啊??
希望结交高手。帮助我学习,等我成为高手了大家交流。本人qq:58203777
救人一命胜。。。

搜索更多相关主题的帖子: 越界 解决方案 
2006-08-30 10:12
ivan79
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-10
收藏
得分:0 
如果每次都要先redim一个足够大的数组来存数据,那我还不如直接定义一个足够大的确定大的静态数组算了.
那样动态数组还有什么意义啊??请高手指点迷津...我知道我是菜鸟,希望大家在笑话我的同时帮助我.我相信大家都是从菜鸟开始的.while one man can do another can do.
2006-09-01 13:51
ivan79
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-10
收藏
得分:0 

N6iLFggz.rar (2.48 KB) [求助]vb数组下标越界


为了方便怕麻烦的高手,现粘贴代码如下:
Private Type teacher
name As String * 8
rq As String * 7
prof As String * 8
sex As Boolean
nation As String * 10
history As String * 100
salary As Integer
lang As Integer
depart As String * 20
End Type

Dim tech() As teacher

Dim n As Integer, curi As Integer

Private Sub xianshi(ByVal X As Integer)

Text1.Text = tech(X).name

Text2.Text = tech(X).rq
Combo1.Text = tech(X).prof

Option1(0).Value = tech(X).sex

Combo2.Text = tech(X).nation

Text3.Text = tech(X).salary

HScroll1.Value = tech(X).lang

Text5.Text = tech(X).history
Text4.Text = tech(X).depart


End Sub

Private Sub Combo1_Click()

tech(curi).prof = Combo1.Text


End Sub


Private Sub Combo2_Click()

tech(curi).nation = Combo2.Text


End Sub


Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
curi = curi - 1
If curi <= 0 Then curi = 1
xianshi (curi)
Case 1
If curi > n Then curi = n
xianshi (curi)
Case 2
Command1(0).Enabled = True
Command1(1).Enabled = True
Command1(3).Enabled = True
Command1(4).Enabled = True
n = n + 1
ReDim Preserve tech(n) As teacher
curi = n
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Combo1.Text = ""
Combo2.Text = ""
HScroll1.Value = 0
Option1(0).Value = True
With tech(curi)
.name = "": .depart = "": .history = "": .lang = 0
.nation = ""
.prof = ""
.rq = ""
.salary = 0
.sex = True
Text1.SetFocus
End With
Case 3
If MsgBox("真要删除当前教师记录吗?", 36, "信息提示") = 6 Then
n = n - 1
If n = 0 Then
Command1(0).Enabled = False
Command1(1).Enabled = False
Command1(3).Enabled = False
Command1(4).Enabled = False
Exit Sub
End If
If curi = n + 1 Then Exit Sub
For i = curi To n
tech(i).name = tech(i + 1).name
tech(i).depart = tech(i + 1).depart
tech(i).salary = tech(i + 1).salary
tech(i).history = tech(i + 1).history
tech(i).prof = tech(i + 1).prof
tech(i).sex = tech(i + 1).sex
tech(i).nation = tech(i + 1).nation
tech(i).lang = tech(i + 1).lang
tech(i).rq = tech(i + 1).rq
Next i
curi = curi - 1
xianshi (curi)
End If

Case 4
i = InputBox("请输入记录号(1-" + Trim(Str(n)) + ")", "数据输入", "1")
If i <= n And i > 0 Then
curi = i
xianshi (curi)
End If
End Select

End Sub


Private Sub Form_Load()

With Combo2
.AddItem "汉族", 0
.AddItem "回族", 1
.AddItem "满族", 2
.AddItem "蒙古族", 3
End With
With Combo1
.AddItem "教授", 0
.AddItem "副教授", 1
.AddItem "讲师", 2
.AddItem "助教", 3
End With
Command1(0).Enabled = False
Command1(1).Enabled = False
Command1(3).Enabled = False
Command1(4).Enabled = False
n = 0

End Sub

Private Sub Option1_Change(Index As Integer)

tech(curi).sex = Option1(0).Value


End Sub

Private Sub HScroll1_Change()

tech(curi).lang = HScroll1.Value


End Sub

Private Sub Text1_Change()


tech(curi).name = Text1.Text


End Sub

Private Sub Text2_Change()


tech(curi).rq = Text2.Text


End Sub

Private Sub Text3_Change()

tech(curi).salary = Val(Text3.Text)
End Sub

Private Sub Text4_Change()

tech(curi).depart = Text4.Text
End Sub

Private Sub Text5_Change()
tech(cur).history = Text5.Text

End Sub

2006-09-02 14:42
ivan79
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-10
收藏
得分:0 
运行时第一次触动change类事件,会发生下标越界错误,开始我以为是option base 的问题,但改动后仍出错.
望不吝赐教.....
2006-09-02 14:45
ivan79
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-10
收藏
得分:0 
我开始怀疑自己装的vb6是不是有问题了...因为我抄了几段子代码,完全一字不改做的程序,也出了数组下标越界错误,
如果不幸真是vb6的版本问题,那就太冤了.
2006-09-02 14:48
ivan79
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-10
收藏
得分:0 
真没想到这么快就又受到您的帮助..谢谢
我回去试试看.这个办法我想过,不过因为我没任何基础,自学的,对计算机基础知识很模糊,所以我无法决定该给redim时的动态数组预先给多少空间,也搞不清楚这个给定的空间将对应用程序带来什么样的影响.
所以,我怕redim时给的维数不够大的话,会带来load一次但不能输入大于给定空间维数的结果.
说来说去,还是自学的时候,最大的一个问题,如何安排课程的设计和合理选择教程.
热切期盼得到yeshirow的热心帮助.望能交为qq好友.我的号码:58203777.(无他意,也不勉强)
我想遇到问题就问别人,还不如直接问别人的知识的主要来源,以便自己花时间去摸索.这样也不至于给人带来很大的麻烦.
再次感谢.
2006-09-02 17:11
快速回复:[求助]vb数组下标越界
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018142 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved