BTW, es gibt keinen Funktionsaufruf sondern die Klasse TStab ändert intern eine Variable. Beim anschließenden Read eines Items sollte der doch verfügbar sein ??
Mit
FStabList[I]
holst du dir eine Kopie des Records und führst dann darauf die Prozedur aus. Die Änderungen machst du daher in der Kopie.
Es geht an der Stelle nur mit Pointern, also am sinnvollsten wie schon genannt mit Klassen.