[Gambas-user] EOF problem
Les Hardy
les at ...2337...
Sun Apr 18 11:54:11 CEST 2010
Hi Ed,
I figured it out.
First of all, depending how the text file was emptied/created, the
contents may not be truely empty.
Gedit for example leaves the 0A (end-of-line) character in the 'empty'
file. This is recognised by eof() as a character, so, end-of-file is not
found.
I am not sure if this can be considered a bug in Gambas, but it does
mean an eof() is only good for preventing read errors, and is not
reliable for testing if a file is empty.
The following code gets around the problem.
It's not ideal, but it does work. Maybe someone else can improve on it.
Regards
Les Hardy
PUBLIC SUB Button1_Click()
DIM tfile AS File
DIM Fname AS String
DIM t, txt AS String
Label1.text = ""
Fname = "/home/les/Documents/testdat.txt"
tfile = OPEN Fname FOR READ
IF NOT Eof(tfile) THEN
LINE INPUT #tfile, t
txt = IIf(Trim(t) > "", t, "EOF")
Label1.text = txt
ELSE
Label1.text = "EOF"
ENDIF
CLOSE #tfile
END
Ed & Clare Kelm wrote:
> Hi!
>
> I'm having a problem reliably reading a text file.
>
> I am using:
>
> Panasonic CF-51 Toughbook
> Ubuntu 9.04 , Kernel 2.6.28-18
> Gambas 2.8, QT
>
> Below is the code for a test program which demonstrates the problem.
> This is a simple form, with one button, and one label. The only code is
> the Button1_click event shown. The file "testdat.txt" contained in
> Fname is a text file with one short line of text, created with GEDIT.
>
> One would expect that clicking Button1 would open the file, read the
> line of text, and place it into label1. Indeed, this is exactly what
> happens roughly 4 times out of 5. However, sometimes the file comes up
> empty, with an immediate EOF. When the program is first started from
> the IDE, if it works correctly the first time, it will do so every time
> the button is clicked. However, if it fails (indicates EOF) the first
> time, it will fail everytime the button is clicked. Stopping the
> program and restarting it will roll the dice anew. There does not seem
> to be any pattern to the failure. It might happen twice in a row, it
> might not happen for 10 starts.
>
> Does anybody have any ideas? Is this an Ubuntu issue?
>
> Thanks!
>
> Ed K.
>
>
> PUBLIC SUB Button1_Click()
>
> DIM tfile AS File
> DIM Fname AS String
>
> Fname = "/home/us/Documents/testdat.txt"
>
> tfile = OPEN Fname FOR READ
>
> label1.Text = ""
>
> IF Eof(tfile) THEN
> label1.Text = "EOF"
> ELSE
> LINE INPUT #tfile, label1.Text
> END IF
>
> CLOSE #tfile
>
> END
>
>
>
More information about the User
mailing list