<br><tstyle="margin-left: 10px">var f := new BlockFileOf<ElementT>('temp.bin',sizeof(HeaderT));//Этот конструктор установит Offset на sizeof(HeaderT) </t>
<br><tstyle="margin-left: 10px">f.Rewrite; </t>
<br><tstyle="margin-left: 10px">begin </t>
<br><tstyle="margin-left: 20px">var hf := new BlockFileOf<HeaderT>(f);//Этот конструктор создаст новый "BlockFileOf<T>", у которого будет общий фаловый поток с "f" </t>
<br><tstyle="margin-left: 10px">f.Close;//А вот теперь поток будет закрыт и файл сохранён, потому что теперь это последняя перменная, в которой открыт файл </t>
<br><tstyle="margin-left: 00px"></t>
<br><tstyle="margin-left: 00px"></t>
<br><tstyle="margin-left: 00px"></t>
<br><tstyle="margin-left: 10px">f.Reset; </t>
<br><tstyle="margin-left: 10px">begin </t>
<br><tstyle="margin-left: 20px">var hf := new BlockFileOf<HeaderT>(f);</t>
<br><tstyle="margin-left: 00px"></t>
<br><tstyle="margin-left: 20px">var h := hf.Read; </t>
<br><tstyle="margin-left: 20px">writeln(h); </t>
<br><tstyle="margin-left: 00px"></t>
<br><tstyle="margin-left: 20px">hf.Close;//Опять же, надо закрыть сразу, как закончили пользоваться </t>
Прошу обратить внимание на то, что я не поставил тут "f.Pos := 0" перед чтением/записью только по стечению 2 обстоятельств:<br>
1. Этот код линейный, в нём хорошо видно что прямо перед чтением/записью элементов идёт чтение/запись заголовка. А значит, файловая позиция сама передвинется на sizeof(HeaderT).<br>
2. Написав этот короткий участок кода - я протестировал его, чтоб быть увереным что ничего не забыл и не перепутал.