Задача: хранить структурированные данные в файле. Для не очень больших объёмов вполне подойдёт .odc.

Для хранения данных используем персистентные сущности (наследники Stores.Store). В каждом типе определяем процедуры Internalize, Externalize.

Создаём экземпляр файла Files.File, подсоединяем к нему записыватель Stores.Writer и пишем в файл все наши сущности с помощью wr.WriteStore.

Чтобы прочитать данные, теперь нужно подсоединить к файлу читателя Stores.Reader и читать из него с помощью rd.ReadStore.

И вот тут некоторая закавыка.

Stores.Reader не умеет читать из файла нулевой длины. После ConnectTo(f), если f.Length() = 0, вызов rd.ReadStore() приводит к трапу. То есть, пытаться сразу читать персистентные объекты из файла некорректно.
Плюс, легко нарваться на попытку чтения несуществующего Store.

Хотелось бы в этом треде осветить вопрос использования файлов таким образом. Что правильно делать, что неправильно, какие возможности можно использовать и каким образом. В итоге, я планирую собрать из треда всю информацию в отдельную статью-руководство.