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

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

搜索更多相关主题的帖子: 越界 解决方案 
2006-08-30 10:12
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-30 12:10
凉草帽
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-3-13
收藏
得分:0 
下标越界说明你定义的数组容不下你的数据,你最好检查一下数组中数据的个数是不是与其中要放的数据个数相等

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

哈, 如果不想起個成員變數來跟蹤動態陣列, 就在使用下標時, 用 UBound 檢測一下, 如果 你將要使用的下標比返回值大, 就使用 Redim 重新分配吧.
Redim Preserve


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-09-01 18:04
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 
有时用 UBound(ArrayName) 也会出错的
2006-09-02 13:05
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

是說 LBound ? 還是指 not IsArray.
這個自己注意可以了


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-09-02 13:13
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
快速回复:[求助]vb数组下标越界
数据加载中...
 
   



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

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