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 > > > ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user