Jeff Massung wrote:
Warren,

I've read through most of these suggestions, but I'm surprised that the
obvious hasn't been suggested yet (that I've seen): skip everything...

Hasn't been suggested because it won't work.

put the length of url "file:myfile.txt" into tEnd
open file "myfile.txt" for text update
seek to tEnd in file "myfile.txt"

>From here just back up a "reasonable" number of characters... say 200. Find
the last CR character, nuke everything else and close the file. Didn't find
one? Try backing up another 200, etc. It'll be a whole lot faster.

"... nuke everything else ...." ?? How ?
You've opened the file for update, so anything that you write to the file *overwrites* any existing characters at the same position(s), and leaves everything following that unchanged. So there is no way to shorten a file if opened in update mode.

I *think* the best you can do is

1. find file length (best to use the detailed files)
2. open for read, and read some chunk at the end (200, 1000, whatever ....)
      (open for read is more efficient than open for update)
3. calculate the number of bytes to be deleted off the end of the file
4. close the file
5. open the file for append
6. write empty to the file at the appropriate point
Edge case to concern yourself with would be if your file happens to end with
a CR and maybe you want to ignore those cases. But that should be easy
enough to solve.

Easiest (and I think best) way to resolve that corner case is to preserve the trailing CR if it's there to begin with, and not leave one if it wasn't there to start with. This happens to involve no extra work at all, hence it's the easiest one :-)

I decided it was time to email some (reasonably tested) revTalk rather than just ideas ....

(NB assumes that the defaultfolder has already been set to the appropriate place)
on deletelastline pFile
   constant K = 1000
   put the detailed files into t
   filter t with pFile & ",*"
   put item 2 of t into tFileLength
open file pFile for read
   seek to tFileLength-K in  file pFile
   read from file pFile until end
   close file pFile
put the number of chars in the last line of it into tNum open file pFile for append
   write empty to file pFile at (tFileLength-tNum-3)
   close file pFile
end deletelastline
-- Alex.
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to