VB实时错误13是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:19:26
Public Sub Form_Click()
Dim a(9, 4) As Variant
Open "g:\bs\pole.dat" For Input As #1
a(9, 4) = Input(LOF(1), #1)
Dim i As Integer
Dim x As Long
Dim y As Long
Dim z As Long
Dim k As Long
Randomize
For i = 0 To 9
x = a(i, 2)
y = a(i, 3)
z = a(i, 4)
k = y + z
Line (x, y)-(x, k)
Next i
End Sub
哪位高手请指点下,我这小程序是哪里错了,出现了实时错误13.说是类型不匹配。谢谢了
我用下面的程序来看x,y,z是否有值,结果发现所有的xyz都是0.
ublic Sub Form_Click()
Open "g:\bs\pole.dat" For Input As #1
Dim a(9, 4) As Variant
a(9, 4) = Input(LOF(1), #1)
Dim x As Integer
Dim i As Integer
For i = 0 To 9
x = a(i, 2)
Print x
Next i
End Sub
这是什么原因呢?怎么才可以让xyz的值与数组里的同步呢?
1 nz1 0 0 10
2 zx1 300 50 11
3 zx2 660 120 12
4 zx3 1020 170 10
5 zx4 1260 210 11
6 zx5 1560 260 12
7 zx6 1860 310 10
8 zx7 2280 380 11
9 zx8 2580 430 12
10 nz2 3000

分析一些你程序中的问题:
Open "g:\bs\pole.dat" For Input As #1
'打开顺序文件"g:\bs\pole.dat"(文件存在吗?),打开方式是读取

'如果是你说的记录是“2 zx1 300 50 11”形式的,就存在问题了:因为顺序文件读取的是一行记录,并且是用一个变量读取的,如果存储记录形式是“"2" "zx1" "300" "50" "11"”的格式,那么是5个变量,读取方法是:
Input #1 变量名1
'如果有多个变量,那么:
Input #1 变量名1,变量名2,变量名3.....
'用EOF函数判断是否到达文件末尾
'那么对于你的程序,我认为:首先将"g:\bs\pole.dat"文件存储为如“"2" "zx1" "300" "50" "11"”的格式,然后:
IF NOT EOF(1) THEN '此语句可以用循环实现,但必须移动指针
Input #1 B0,B1,B2,B3,B4
a(i,0)=B0:a(i,1)=B1:a(i,2)=B2:a(i,3)=B3:a(i,4)=B4
i=i+1
END IF
'通过这样才能就数据存储在数组中!!

当然,你也可以将“2 zx1 300 50 11”用一个变量读取,然后再用字符串处理函数进行分割,分割为5部分。

要么 g:\bs\pole.dat里面有字符或者是a(9, 4)有空值
要么 就改Dim a(9, 4) As long

你只需要把x,y,z都定义成Variant,就可以达到目的。