<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" перед чтением/записью только по стечению двух обстоятельств:<br>
1. Этот код линейный, в нём хорошо видно, что прямо перед чтением/записью элементов идёт чтение/запись заголовка. А значит, файловый курсор сам передвинется на sizeof(HeaderT).<br>
2. Написав этот короткий участок кода я протестировал его, чтобы быть уверенным в том, что я ничего не забыл и не перепутал.