Hola, no me lo he mirado a fondo, si tengo tiempo me lo miro bien (

)... pero por lo que explicas, de que funciona bien una primera vez pero no una segunda, y sumandole que usas buffers y que el error es un Access Violation... a mi me viene a la cabeza que el error
quizas ocurre porque no liberas los buffers correctamente al terminar la primera repetición, y por esto al intentar usarla por segunda vez (con su buffer lleno y todo esto, vamos que no es virgen xD) pues puede provocar que intentes leer en un sitio fuera de memoria, etc... etc....
Ya te digo que no me lo he mirado a fondo, es todo fruto de la imaginación, o sea que no te lo tomes como si este fuera el fallo, simplemente comprueba que liberas todos los buffers al terminar, etc... etc...
Saludos y bones festes.