Reading/Deleting Last Line Of File

Alex Tweedly alex at tweedly.net
Fri Feb 12 19:25:06 EST 2010


Richard Gaskin wrote:
> Jim Bufalini wrote:
>
>> Richard Gaskin wrote:
>>
>>> But FWIW, I tried your version and it seemed to leave the file
>>> unchanged
>>
>> If your original file ends in a cr then Alex's code would end in 
>> absolutely
>> no change. ;-)
>
> Thanks, Jim.  I tried it both ways; no change to the file's contents, 
> although the mod date gets updated so I know it's trying.
I strongly suspect it only works on Windows :-(   Sorry.
I don't have either a Mac or Linux box to try it on, however I did just 
try it on the on-rev server (as an .irev script) and it also appears to 
leave the file unchanged there.

In fact, it gives an error ("error in offset expression") on the seek, 
because the test file is less than 1000 chars - an error which didn't 
get flagged up on Windows. I changed the line from
    seek tFileLength-K in file pFile
to
   if tFileLength-k > 0 then seek tFileLength-K in file pFile
to avoid the error. But it then leaves the file unchanged.

I suspect the *trick* of opening a file for append, then seeking back 
into the middle of the file before doing a write is OS-dependent. It's 
certainly not documented (either way), and I was surprised when Jim said 
that it could be done.
Intuitively, 'append' should mean that the existing file is unchangable 
- all you can do is add to it.

Playing around some more, it appears that the results of write to file 
in these odd cases are not always what you'd expect.

I would have expected the following two fragments to be equivalent

> seek to 2 in file "b.txt"
> write "x" to file "b.txt"
and

> write "x" to file "b.txt" at 2
to be equivalent, but they are not. The latter truncates the file after 
the write, but the former does not (in Windows).

Could you try this in your multi-line msg box and let me know what it 
does on Mac ?
> put "abcdefg" & CR into URL "file:b.txt"
> put URL "file:b.txt"
> open file "b.txt" for append
> write "x" to file "b.txt"  at 2
> close file "b.txt"
> put URL "file:b.txt" after msg
on Win, it produces
> abcdefg
> abx
Thanks
-- Alex.










More information about the use-livecode mailing list