VB问题 两个 有能力的请进

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:58:04
一.有两段程序
(1)
CommonDialog1.ShowOpen
Open CommonDialog1.FileTitle For Input As #1
Do While Not EOF(1)
Line Input #1, x
Text1.Text = Text1.Text + x + vbCrLf
Loop
Close #1

(2)
Open App.Path & "\in.txt" For Input As #1
For j = 1 To 100
Input #1, i(j)
Next
Close #1
For j = 1 To 100
Text1.Text = Text1.Text & i(j) & Space(5)
Next
问题:个人觉得这两个程序差不多 只不过第二个要先把数据写入数组 和为什么第二个程序在写入text1.text的时候把数据加起来要用“&”,用“+”则会出错,提示是:类型不匹配。在第一段程序里却可以用“+”

二.有这么段程序
Private Sub Command2_Click()
Dim sum As Long
For i = 1 To 100
If 800 > a(i) And a(i) >= 400 Then
sum = sum + a(i)
End If
Next i
Text1.Text = sum
Open "F:\文件档案\工作\VB\二级\试卷\二级VB操作题\第1套\综合应用\result.txt" For Output As #1
Print #1, Text1.Text
Close #1
End Sub
问题:我第一次编的时候在IF那里是写的是“if

1.连接两个字符串的正规写法是&而不是+, &会把所有类型的数据都当作字符串类型,所以不会报错,而+如果遇见不是子符串类型的就会报错,容错能力非常低。所以推荐用&不用+。
像第一段语句,Text1.Text + x + vbCrLf,+号连接的三部分都是字符串类型,所以不会有问题。而第二段语句,没有显示定义i()数组,那么其中很有可能不是字符串子类型,再用+号立即就出错。
2.if 800>a(i)>=400 then 在VB中是错误的。虽然不会报错,但是运算全部搞错了。这个的意思是,800与a(i)作比较,比完了,是一个布尔变量,即只能是True(-1) 或者False(0),拿着这个值再与400比较,当然永远不可能大于等于400了,所以永远不成立。VB中,判断这种范围,只能乖乖的写:If 800 > a(i) And a(i) >= 400 Then 而且最明智的写法加上括号,万无一失。If (800 > a(i)) And (a(i) >= 400) Then

一、
因为你的text是文本,用+表示数字类型的运算,除非写
Text1.Text = Text1.Text + str(i(j))+ Space(5)

二、
因为vb不支持你那种写法= =!不规范

+号是标准字符串连接符
&号是强制字符串连接,它将会把&号后面的变量强制转换为字符

if 800>a(i)>=400 then这种写法还真难到我了,真没这样写过。但也不像楼上说的永远为False,比方说如果写成if 800>a(i)<900 then 就会为True

if 800>a(i)>=400 then”
800>a(i)结果是布尔值总是小于400,所以*800>a(i))>=400 结果是fasle
If 800 > a(i) And a(i) >= 400 Then
同时满足这两不等式就执行下面程序