标题:VB6.0下标越界问题,拜托各位大佬了
只看楼主
ImYuki
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-10-6
 问题点数:0 回复次数:9 
VB6.0下标越界问题,拜托各位大佬了
Dim B() As Double
ReDim B(m - 1, 3)
Dim A() As String
ReDim A(m, 4) As String
A = Split(Text1.Text, Chr(13) & Chr(10))
For i = 0 To (m - 2)
For j = 0 To 2
B(i, j) = CDbl(A(i + 1, j + 1))
Next j
Next i

想取A数组中除第一行与第一列的数据给B数组

[此贴子已经被作者于2018-10-7 12:50编辑过]

搜索更多相关主题的帖子: VB6.0 越界 String For Next 
2018-10-06 21:54
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:320
专家分:561
注 册:2013-10-30
得分:0 
Dim B() As Double
ReDim B(m - 1, 3)   'm=0,当然下标越界
Dim A() As String
ReDim A(m, 4) As String
A = Split(Text1.Text, Chr(13) & Chr(10))
For i = 0 To (m - 2)
For j = 0 To 2
B(i, j) = CDbl(A(i + 1, j + 1))
Next j
Next i
2018-10-07 07:45
ImYuki
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-10-6
得分:0 
回复 2楼 HVB6
谢谢回复!m=14,在之前的代码中已赋值,调试时B(i,j)=...这一步骤出现的下标出错
2018-10-07 12:53
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:320
专家分:561
注 册:2013-10-30
得分:0 
Dim B() As Double
ReDim B(m - 1, 3)   'm=0,当然下标越界
Dim A() As String
ReDim A(m, 4) As String
A = Split(Text1.Text, Chr(13) & Chr(10))
For i = 0 To (m - 2)
For j = 0 To 2
   'B(i, j) = CDbl(A(i + 1, j + 1))
   s=CDbl(A(i + 1, j + 1)) &  Chr(13) '这样看看是否下标越界?
Next j
Next i
   msgbox s
2018-10-07 16:05
ImYuki
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-10-6
得分:0 
回复 4楼 HVB6
s是?怎么定义呢?
2018-10-07 16:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
Dim B() As Double
ReDim B(m - 1, 3)
Dim A() As String
ReDim A(m, 4) As String
A = Split(Text1.Text, Chr(13) & Chr(10))              '这步会自动重定义数组大小
For i = 0 To (m - 2)                                  '在这里下断点,检查A数组的大小
For j = 0 To 2
B(i, j) = CDbl(A(i + 1, j + 1))                       'split 后得到的是维数组,给二个下标会报错
Next j
Next i

----------------------------------------------
Dim B() As Double                              
Dim A() As String

    j = Len(Text1.Text)                                 '取原长度
Do
    i = j                                               '保存原长度
    If Right(Text1.Text, 2) = vbCrLf Then               '如果最后有一回车换行符
        Text1.Text = Left(Text1.Text, i - 2)            '干掉回车换行符
    End If
    j = Len(Text1.Text)                                 '取新长度
Loop While i <> j                                       '如果新长度不等于原长度,说明干掉了一个空行,继续循环,是否还有空行

A = Split(Text1.Text, Chr(13) & Chr(10))              '分解到数组A中,会自动重定义数组大小,只能得到一维数组

redim b(ubound(a)-2)           '不要第一个和第二个,那就要少二个元素,使用UBOUND取数组最大下标。
                               '因为是0开始的,所以起始下标不用取。如果不能确定那也要取
For i = 1 To UBound(A) - 1
  B(i - 1) = CDbl(A(i))
Next i

------------
表示没看出来你的二维数组是怎么来,怎么转换结果。




[此贴子已经被作者于2018-10-7 21:19编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2018-10-07 21:05
ImYuki
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-10-6
得分:0 
回复 6楼 风吹过b
谢谢大佬!我试着输出B到文本框但只有一个0...
我的具体问题其实是这样的:
文本框中内容的第一行第一列都是字符,我要把其他的数据输入到数组中并进行一些计算,我的想法是先定义一个字符串数组A,再定义一个double数组B,B(i,j)=CDbl(A(i+1,j+1)),但在这一步中出现了下标越界...
文本框内容:
姓名,语文,数学,英语
A,88,86,90
B,85,95,82
C,90,92,99
D,82,78,86
E,95,89,90
F,78,82,88
2018-10-08 20:40
yingshu
Rank: 4
等 级:贵宾
威 望:10
帖 子:49
专家分:212
注 册:2018-7-24
得分:0 
Dim A() As Double
Dim B() As String
    B = Split(Text1.Text, Chr(13))
Dim C() As String
Dim i As Long
Dim j As Long
    For i = 1 To UBound(B) - 1
      C = Split(B(i), ",")
      ReDim A(i, 1 To UBound(C))
        For j = 1 To UBound(C)
            A(i, j) = C(j)
            Print A(i, j)
        Next j
    Next i
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
小小小菜鸟,努力学习ing

希望对你有帮助
2018-10-08 23:46
ImYuki
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-10-6
得分:0 
回复 8楼 yingshu
非常感谢!数组可以输出正确内容了,就是没有分行和列
我把它改成了:
 A(i, j) = C(j)
Print
Text3.Text = Text3.Text & Str(A(i, j))
Next j
Text3.Text = Text3.Text & vbCrLf
Next i
就解决啦

[此贴子已经被作者于2018-10-9 22:52编辑过]

2018-10-09 22:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490215-1-1.html




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

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