I am writing a program that allows for people to answer simple questions on Capital Cities of the world. The main program works flawlessly, but I decided to add in a new function that records the user's answers to a question if they get it incorrect and posts it in an external file (named Incorrect.txt) and will then load the file to show the user when the Form "Leaderboard" is loaded.

The actual writing to the file is fine, but when I attempt to read it in from the file, I get the "Input past End of File Error". I have tried to fix this with the "end of file" statements, but it fails to work and according to my teachers, it should.

Here is the code for the read-in to the form.

Private Sub AnswerPaneLoad()
Dim Ansread As Variant
Dim Loading(2, 8) As String
Dim Readin2(2, 8) As String



Open "Incorrect.txt" For Input As #2

For Ansread = 1 To EOF(2)
Line Input #2, Loading(1, Ansread)
Line Input #2, Loading(2, Ansread)
AnswerPane.AddItem Loading(1, Ansread)
AnswerPane.AddItem Loading(2, Ansread)
Next
Close #2

Can anyone help?

Thanks.

I would use a do until loop. That way the code will only be executed only when there is a line in the text file. That should avoid the error that you mentioned.

Dim IntCounter as integer
Open "Incorrect.txt" For Input As #2
Do until EOF(2)
    Line Input #2, ....
    ...


Loop

Also, I would look at your code inside the loop: Loading(1, Ansread).

I would say that the first element of the array should be Loading(0, Ansread)

The Multi Dimensional arrays as you have them declared actually have 3 first elements (0, 1, 2) and 9 second elements (0, 1, 2, ....., 8). The first value of the Arrays declared as you have coded starts with 0: e.g. Loading (0, 0).

If you want to start with 1, you must be explicit in VB6. But I don't really have enough info from your code to determine if that is your actual problem. This is just a guess. So I couldn't really give you a solid answer here.

Dim strArray(1 to 2, 1 to 8) as String

Also, you might consider changing your code with regards to your variable Ansread declared as a Variant. You can probably get away with it; but since you're dealing with arrays that will increase with integer or long values, why use a variant variable: use an integer variable. I think you're just asking for trouble there.

But I'm assuming that Ansread has already been determined from code that you didn't include in your post and that it is an integer value.

Your issue may be with the multiple line input statements within the loop. I'd throw a breakpoint in and be sure the error isn't coming from the second input line. It may be that the first input line reads, then you acheive EOF, but then you try to do another read without checking EOF again. Blind reads are never good.

Also be sure that your file does not have a blank line at the end of all of your data. If this is the case, then there's your issue.

I am writing a program that allows for people to answer simple questions on Capital Cities of the world. The main program works flawlessly, but I decided to add in a new function that records the user's answers to a question if they get it incorrect and posts it in an external file (named Incorrect.txt) and will then load the file to show the user when the Form "Leaderboard" is loaded.

The actual writing to the file is fine, but when I attempt to read it in from the file, I get the "Input past End of File Error". I have tried to fix this with the "end of file" statements, but it fails to work and according to my teachers, it should.

Here is the code for the read-in to the form.

Private Sub AnswerPaneLoad()
Dim Ansread As Variant
Dim Loading(2, 8) As String
Dim Readin2(2, 8) As String



Open "Incorrect.txt" For Input As #2

For Ansread = 1 To EOF(2)
Line Input #2, Loading(1, Ansread)
Line Input #2, Loading(2, Ansread)
AnswerPane.AddItem Loading(1, Ansread)
AnswerPane.AddItem Loading(2, Ansread)
Next
Close #2

Can anyone help?

Thanks.

This article has been dead for over six months. Start a new discussion instead.