编一个小程序,将气象序列的资料改变格式编排,如图:
希望把格式变为“某年 1 2 3 ……12”
每一年为行,月值为列。程序代码为;
Dim a() As Variant
Dim N As Integer
Private Sub Command1_Click()
Open filename1 For Input As #1
Open filename2 For Output As #2
Do While Not EOF(1)
N = N + 1
ReDim Preserve a(20, N)
Input #1, a(1, N), a(2, N), a(3, N), a(4, N), a(5, N)
Loop
For i = 1 To N - 13
If a(2, i + 1) = a(2, i) Then
k = k + 1
Print #2, a(2, i); a(5, i); a(5, i + 1); a(5, i + 2); a(5, i + 3); …… a(5, i + 11); a(5, i + 12)
End If
Next i
End Sub
程序还没正式运行,就出现输出超出文件尾,调试时,黄色高亮指在Input#1那一行。这是什么原因呢?
首先,你的文本文件中每行只有4个数据,但你却用5个变量去读,这样读到最后一行的时候就会出现有些变量没有对应数据的情况,VB就会提示“输入超出文件尾”(注意哦,只有“输入超出文件尾”的,没有“输出超出文件尾”的);
其次,建议你最好不要用多个变量去读取文本数据,因为这对文本数据的格式是有严格要求的,即不能有空行(包括文件末尾也不能有空行)、每行的数据数量要绝对固定,否则就会出错。最好是先读取整行数据,再从中分解出每个数据。
下面是我改进后的代码,仅供参考:
Private Sub Command1_Click()