注册 登录
编程论坛 VB6论坛

新手上路,各位高手帮忙看看这个代码,提示缺少数组。谢谢指教

Jamin_Wong 发布于 2017-06-02 09:45, 1797 次点击
Private Sub Form_Load()
    Dim a() As String
    Dim i As String
        i = 0
'定义名单跳转的时间为10s
     Timer1.Interval = 10
     Timer1.Enabled = False
     Command1.Caption = "开始"
        Label1.Alignment = 2           '字体居中
        Label1.Font = "微软雅黑"       '字体为 微软雅黑
        Label1.FontSize = 15           '字体的大小
        
 '读取名单,注意名单必须放在D盘的txt内
 
       Open "D:\1.txt" For Input As #1
              Do Until EOF(1)
        i = i + 1
        ReDim Preserve a(1 To i) As String
        Line Input #1, a(i)                  '按行读取名单,所有的名单必须一行一个
        Loop
        
               
   
End Sub

Private Sub Timer1_Timer()

    Dim a As String
   
    Dim j As Integer
    Randomize
   
    'i 为名单的人数,Rnd为0-1之间数,不包括0,1
   
    j = Int(i * Rnd + 1)
    Label1.Caption = a(j)
     
   
End Sub
3 回复
#2
HVB62017-06-02 11:32
回复 楼主 Jamin_Wong
Private Sub Form_Load()
    Dim a() As String
    Dim i As String
        i = 0
'定义名单跳转的时间为10s
     Timer1.Interval = 10
     Timer1.Enabled = False
     Command1.Caption = "开始"
        Label1.Alignment = 2           '字体居中
        Label1.Font = "微软雅黑"       '字体为 微软雅黑
        Label1.FontSize = 15           '字体的大小
        
 '读取名单,注意名单必须放在D盘的txt内
 
       Open "D:\1.txt" For Input As #1
              Do Until EOF(1)
        i = i + 1
        ReDim Preserve a(1 To i) As String
        Line Input #1, a(i)                  '按行读取名单,所有的名单必须一行一个
        Loop
        
               
   
End Sub

Private Sub Timer1_Timer()

   ' Dim a As String  注释此语句试试
   
    Dim j As Integer
    Randomize
   
    'i 为名单的人数,Rnd为0-1之间数,不包括0,1
   
    j = Int(i * Rnd + 1)
    Label1.Caption = a(j)
     
   
End Sub
#3
xiangyue05102017-06-02 15:22
楼上的也不对吧

程序代码:

Private Sub Form_Load()
    Dim a() As String
     ……
End Sub

这里a()是一个数组,并且是局部数组,只能在Form_Load内部使用。
Private Sub Timer1_Timer()

 Dim a As String

 ……
End sub

这里a是一个字符变量,也是局部变量,只能在Timer1_Timer内部使用。
这两个a分别是不同的变量,也只能在各自的过程中使用。如果a()既要在Form_Load中用,又要在Timer1_Timer中用,需要定义成这个窗口的公用变量
程序代码:

Dim a() As String
Private Sub Form_Load()
    Dim i As String
        i = 0
'定义名单跳转的时间为10s
     Timer1.Interval = 10
     Timer1.Enabled = False
     Command1.Caption = "开始"
        Label1.Alignment = 2           '字体居中
        Label1.Font = "微软雅黑"       '字体为 微软雅黑
        Label1.FontSize = 15           '字体的大小
        

 '读取名单,注意名单必须放在D盘的txt内

       Open "D:\1.txt" For Input As #1
              Do Until EOF(1)
        i = i + 1
        ReDim Preserve a(1 To i) As String
        Line Input #1, a(i)                  '按行读取名单,所有的名单必须一行一个
        Loop
        
               
   
End Sub

Private Sub Timer1_Timer()
    Dim j As Integer
    Randomize
   
    'i 为名单的人数,Rnd为0-1之间数,不包括0,1
   
    j = Int(i * Rnd + 1)
    Label1.Caption = a(j)
     
   
End Sub

#4
ZHRXJR2017-06-05 19:51
Open "D:\1.txt" For Input As #1
              Do Until EOF(1)
        i = i + 1
        ReDim Preserve a(1 To i) As String
        Line Input #1, a(i)                  '按行读取名单,所有的名单必须一行一个
        Loop
'-------------------------------------------------------------------------
        ReDim Preserve a(1 To i) As String    '我认为问题出在这里
定义动态数组不能在循环中定义吧,另外,在通用部分已经定义了Dim a() As String这个数组的数据类型,不能使用ReDim语句再次定义数据类型吧
1