读文本文件问题:输入超出文件尾

mailfj 2003-08-19 05:40:37
Private Sub Form_Load()
Open "d:\ftdata\flute.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, notetxt$
Line Input #1, note1$‘报错,输入超出文件尾
Line Input #1, note2$
Line Input #1, note3$
Loop
note.Text = notetxt
num1.Text = note1
num2.Text = note2
num3.Text = note3
Close #1
End Sub
...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingll 2003-08-20
  • 打赏
  • 举报
回复
唉,楼主要的是结果,不是错误原因
早知我也写代码
射天狼 2003-08-20
  • 打赏
  • 举报
回复
楼主已经犯了一个严重的错误,就是已经通过循环读取文件中的值,就不要再写那么多条的读文件语句了。否则为什么用循环,还只写了四句,难道事先知道文件中有多少句吗?!

而tdl982324(石井坚) 却在楼主的错误想法的基础上犯了一个更加严重的错误,在循环中做过多的判断(严重影响执行速度),你这样的语句执行完之后不论文件中有多少行,那四个变量取出的永远只是最好的四行。那你用循环干什么,直接取最后四行就完了呗~~
一堆蠢人。
smilingchen 2003-08-19
  • 打赏
  • 举报
回复
9494,楼上的说得不错
Reker熊 2003-08-19
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Open "d:\ftdata\flute.txt" For Input As #1
'Do While Not EOF(1)
If Not EOF(1) Then Line Input #1, notetxt$
If Not EOF(1) Then Line Input #1, note1$
If Not EOF(1) Then Line Input #1, note2$
If Not EOF(1) Then Line Input #1, note3$
'Loop
note.Text = notetxt
num1.Text = note1
num2.Text = note2
num3.Text = note3
Close #1
End Sub
lingll 2003-08-19
  • 打赏
  • 举报
回复
你的一次循环是读入4行,
而如果flute.txt是有5行(不是4的倍数)
那么第一次循环的时候,读取了4行,还有一行,EOF(1)=false
接着是Line Input #1, notetxt$
此时EOF(1)=true,已是文件末尾了
因此接着的Line Input #1, note1$肯定报错
射天狼 2003-08-19
  • 打赏
  • 举报
回复
你既然用循环来读取文件就不要在循环体里写那么多的输入语句了。

Private Sub Form_Load()
Dim s() As String, i As Long

Open "d:\ftdata\flute.txt" For Input As #1
i = 0
Do While Not EOF(1)
ReDim Preserve s(i + 1)
Input #1, s(i)
i = i + 1
Loop

Close #1
End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧