Ani obiektów ani stringów (samych czy stanowiących pola rekordu) nie da się tak zapisać do pliku bo zapiszą się tylko wskaźniki. Albo trzeba samemu obsłużyć zapis stringu (z uzwględnieniem długości) albo uzyć krótkich łańcuchów lub array of char.
Zapis kompletnej tablicy dynamicznej do pliku jest prosty.
x:array of TCostam
F: file of TCostam
[...]
BlockWrite(F,x[0],Length(x));
Podobnie można zapisać string
s:string;
f:file of byte;
[...]
BlockWrite(F,s[1],Length(s)); //zwróć uwagę na inne indeksowanie
Odczyt:
SetLength(x,FileSize(F));
BlockRead(F,x[0],FileSize(F));
analogicznie string
to zadziała gdy plik sklada się wyłącznie z 1 tablicy lub 1 stringa. W przeciwnym wypadku musisz zapisywac pole z długością, bo nie bedziesz wiedział ile odczytać.