I don't have definitive answers to your questions, but I have some ideas:

1) The major difference between static arrays and dynamic arrays is that static 
arrays are normal variables, whereas dynamic arrays are pointers. I guess what 
might be happening is that when you pass your dynamic array to the BlockWrite 
procedure as an untyped var, it is the memory data for the POINTER (and the 
stuff from there onwards) that is being written to the disk. You want to write 
the stuff that the pointer is pointing to be written to disk, so you have to 
dereference that pointer somehow and pass that data to the BlockWrite procedure.

2) I have a suspicion that the optimal buffer to write to disk depends on many 
factors. Common sense tends to tell me that a buffer size similar to the hard 
disk's sector size would be faster to write than arbitrary sizes. Is this true 
though, given hard disk caching, etc? I don't know. Ultimately, will the gain 
in speed from writing in optimally sized chunks be noticeable to the user? I 
don't know. I suggest you play around and perhaps you can let us know what you 
find?



Reply via email to