Zweites Problem habe ich gerade selbst gelöst, obs die eleganteste Variante ist, ist eine andere Frage...
Den aktuellen Block von hinten nach vorne durchkämmen kann ich durch folgende Änderungen:
pRecCurrBuff:=pRecBuffs;
ergänzen um
inc(pRecCurrBuff, (Props.iRecBufSize*sizeOf(BYTE)*(RecordsToRead-1))); //Den Pointer auf das Ende des Blocks stellen
und statt den Zeiger danach zu inkrementieren
inc(pRecCurrBuff,Props.iRecBufSize * sizeof(BYTE));
wird er logischerweise dekrementiert.
dec(pRecCurrBuff,Props.iRecBufSize * sizeof(BYTE));
Jetzt bleibt noch offen, wie ich den letzten Block zuerst ansprechen und mich dann bis zum ersten Block vorarbeiten kann. Für Vorschläge bin ich jederzeit offen!