| | |
'Input Past End of File' Error Persists even with 'EOF' Statements
Please support our Visual Basic 4 / 5 / 6 advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Mar 2009
Posts: 1
Reputation:
Solved Threads: 0
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.
Can anyone help?
Thanks.
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.
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
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.
•
•
Join Date: Mar 2009
Posts: 835
Reputation:
Solved Threads: 153
Try...
Good Luck
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
Do While Not Eof (FileNumber) 'do stuff here like reading in your file Loop
Good Luck
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.
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.
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.
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
Dim IntCounter as integer Open "Incorrect.txt" For Input As #2 Do until EOF(2) Line Input #2, .... ... Loop
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.
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
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.
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.
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
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.
Western New England College '08
Computer Science
Programming Lang's:
C, C#, Java, Lisp, MASM, Visual Basic 6
Computer Science
Programming Lang's:
C, C#, Java, Lisp, MASM, Visual Basic 6
![]() |
Other Threads in the Visual Basic 4 / 5 / 6 Forum
- Previous Thread: checking repeating data in database
- Next Thread: I need help about my steganography project
| Thread Tools | Search this Thread |
* 6 429 2007 access activex add age append application basic beginner birth bmp calculator cd cells.find click client code college column component connection connectionproblemusingvb6usingoledb copy creat ctrl+f data database datareport date delete dissertations dissertationthesis dissertationtopic edit error excel excelmacro file filename form hardware header iamthwee image inboxinvb internetfiledownload keypress label listbox listview liveperson login looping machine microsoft movingranges number objectinsert open oracle password prime program prompt range-objects readfile reading record refresh remotesqlserverdatabase report retrieve save search sendbyte sites sort sql sql2008 sqlserver subroutine table tags textbox time urldownloadtofile vb vb6 vb6.0 vba visual visualbasic visualbasic6 web window windows





