Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters
Register

Reply
 
LinkBack Thread Tools
Old 18.02.2004, 16:43   #1
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default сериализация в mfc

верно ли, что при загрузке из файла mfc-шными методами текущая позиция в файле может прыгать взад-вперед, и в частности, в какие-то моменты до завершения чтения оказываться в конце файла? дело в том, что сейчас я завершаю чтение по условию
PHP Code:
ar.GetFile()->GetPosition() != ar.GetFile()->GetLength(), 
и в результате чтение завершается где-то в середине, оставляя часть данных за бортом.

и второй вопрос: если это дейтсвительно так, то единственный способ - самому держать в файле инфу о том, как долго считывать?
Reply With Quote
Old 18.02.2004, 17:17   #2
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

у меня страшная догадка: CFile действительно доходит до конца дискового файла, но не из-за формата данных, а потому что CArchive все забирает к себе в буфер! и как мне узнать о наступлении конца файла? ждать, пока CArchive не выкинет исключение?!?
Reply With Quote
Old 18.02.2004, 20:22   #3
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

1. Реализуй свою сериализацию
2. я не совсем понял вопрос. Поставь размер буффера CArchive - а 1 байт - будет тебе читать побайтово, может быть.
Reply With Quote
Old 19.02.2004, 11:42   #4
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

Quote:
Originally Posted by Agregat
2. я не совсем понял вопрос.
держать дополнительный счетчик моих блоков, и цикл чтения вести по этому количеству, хотя это и кривое решение.

устанавливать размер буфера архива тоже не очень красиво, но если иного решения не будет, придется идти этим путем
Reply With Quote
Old 19.02.2004, 18:31   #5
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

Quote:
Originally Posted by Agregat
Поставь размер буффера CArchive - а 1 байт - будет тебе читать побайтово, может быть.
кстати, а как это сделать? желательно без залезания в исходники и использования недокументированных возможностей
Reply With Quote
Old 20.02.2004, 06:14   #6
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

CArchive( CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL );
Reply With Quote
Old 20.02.2004, 06:23   #7
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

Quote:
Originally Posted by Agregat
CArchive( CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL );
да, а во мысль о конструкторе в голову совсем не приходила
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 02:19.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.