1) where is variable TotalBytesRead initialized?
Well, it wasn't as such. The procedure is called every time a file is found from the previous ButtonOnClick event. At the end of each file, the TotalBytesRead is kept full and then added to next time the procedure is called when the next file is found. When there are no further files, it should total the amount read.
However, reading your message made me realise that was the problem, so I made the variable a public one, initialised it at the start of the previous procedure to 0, and now it works :-)
Thanks for the pointer.
Ted