Dafür gibt's die For-Schleife.
Gut, aber wie ist es mit dem Auslesen?
Beim Auslesen des records schreibst du einen "defekten" Pointer in den Record, also an die Stelle wo das Array steht.
Sobald du dann versuchst mit SetLength dem array seine größe zuzuweisen, weil du nun ja auch noch dieses befüllen willst, knallt es ganz furchtbar.
OK, man könnte jetzt das Speichermanagement mit wilden Pointeroperationen umgehen und dort diesen internen Pointer anpassen, aber dann doch lieber die Felder einzeln auslesen ... jedenfalls für die Personen, welche keine Ahnung davon haben wie z.b. die dynamischen arrays intern verwaltet werden.