level 15
问题出在Command1的代码上
点击Command1时,产生一组新的随机数,并且在图片框中每行显示一个数,向文件中每行写入一个数;每当到第5个数时,会在图片框中显示两次(这应该就是你说的“重复数据”),并向文件中额外写入一个空行,就是这个空行,在重新读取文件时会被读取成0
2020年06月08日 15点06分
4
好的,我明白了,谢谢
2020年06月08日 15点06分
吧务
level 13
在【Command_Click()】中的显示和打印方法不是很好,所以容易出错。
1.用判断体
For i = 1 To n
a(i) = Int(Rnd * 91 + 10)
If i Mod 5 <> 0 Then ' 每行有五个数字
Picture1.Print a(i) & " "; ' 每行不足五个数字时后加空格
Print #1, a(i) & " ";
Else
Picture1.Print a(i) ' 每行达到五个数字时后加【回车换行】(无逗号或分号)
Print #1, a(i)
End If
Next
Close #1
2.用字符型变量来描述输出内容
Dim cc As String
cc = ""
For i = 1 To n
a(i) = Int(Rnd * 91 + 10)
cc = cc & a(i)
cc = IIf(i Mod 5 = 0, cc & vbCrLf, cc & " ") ' 每五个数字为一行
Next
' 输出程序段
Picture1.Print cc
Open "D:\MyList.TXT" For OutPut As #1
Print #1, cc
Close #1
' ===========================================
我们建议用第 2 种方法,这样比较清晰地分离出了【输入—处理—输出】程序段。
对于外部文件,要尽可能缩短打开的时间,而且打开使用后要及时关闭。在实际使用中,文件通道号不一定是【1#】,应该用【FreeFile】函数值。这已经超出本帖讨论范围。
在大型计算程序中,特别忌讳【一边计算、一边输出】的编程模式。因为这样会造成 CPU 资源的极大浪费。
2020年06月09日 00点06分
6
好的,谢谢指点
2020年06月09日 06点06分