Binary Reading
Hello,
Im new to MFC i used to program in C# im trying to read a binary file
with this format:
DWORD base_version
DWORD current_version
DWORD vfs_count
:FOREACH( vfs_count )
SSTR vfs_path
DWORD data_offset
:ENDFOR
:FOREACH( vfs_count )
// Seek to <( data_offset )>
DWORD file_count
DWORD unk1
DWORD unk2
:FOREACH file_count
SSTR file_path
DWORD offset
DWORD enc_length
DWORD dec_length
WORD unk3
BYTE unk4
DWORD version
DWORD checksum
:ENDFOR
:ENDFOR
this is the code i use to read it i wanna know if this is the best way
to read it or there is a better way to do it?
if(file.Open(_T(filename), CFile::modeRead, &e))
{
file.Read(&h, sizeof(Header));
for(DWORD i = 0; i < h.vfs_count; i++)
{
file.Read(&VFS.nameLen, sizeof(WORD));
file.Read(&VFS.name, VFS.nameLen);
file.Read(&VFS.data_offset, sizeof(DWORD));
lists.Dataoffset.AddTail(VFS.data_offset);
lists.Name.AddTail(VFS.name);
}
POSITION pos = lists.Dataoffset.GetHeadPosition();
for(DWORD i = 0; i < h.vfs_count; i++)
{
file.Seek(lists.Dataoffset.GetNext(pos),CFile::begin);
file.Read(&Vinfo, sizeof(VFSinfo));
for(DWORD x = 0; x < Vinfo.Filecount; x++)
{
file.Read(&VFS.nameLen, sizeof(WORD));
file.Read(&VFS.name, VFS.nameLen);
file.Read(&VFS.offset, sizeof(DWORD));
file.Read(&VFS.enc_length,sizeof(DWORD));
file.Read(&VFS.dec_length,sizeof(DWORD));
file.Read(&VFS.unk3, sizeof(WORD));
file.Read(&VFS.unk4, sizeof(char));
file.Read(&VFS.version, sizeof(DWORD));
file.Read(&VFS.checksum, sizeof(DWORD));
}
}