Где CArchive в данный момент указывает на файл

У меня есть код, в котором CArchive используется для чтения и записи и файла. После моего исследования я обнаружил, что объект CArchive меняет свое местоположение при чтении данных из разных частей файла. Например, если структура файла похожа на заголовок, то тело и нижний колонтитул. Теперь, если кто-то хочет прочитать нижний колонтитул, то CArchive читает нижний колонтитул, только перейдя в определенное место в файле. Это сделано этим.

COleStreamFile stream;
//Stream is pointed to footer location.
stream.OpenStream(m_pStg, "Footer", nOpenFlags, pError);  // pStg is LPSTORAGE
CArchive ar(&stream, CArchive::load);

Теперь мне интересно знать, в каком месте CArchive будет читать или писать. Индекс байта, местоположение файла или что-то в этом роде.

2

Решение

Вы не можете получить позицию от CArchive объект, но вы можете получить его из основного потока — COleStreamFile в твоем случае. Просто позвони CFile :: GetPosition.

Пример:

COleStreamFile stream;
//Stream is pointed to footer location.
stream.OpenStream(m_pStg, "Footer", nOpenFlags, pError);  // pStg is LPSTORAGE
CArchive ar(&stream, CArchive::load);
// Add some data.
ar << someData;

// And get the current position.
int currentPos = stream.GetPosition();
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]