mfile.Read(m_pTempBuf, 186);
//这里不正确,m_pTempBuf并没分配空间,函数Read并不会为你分配空间,这需要你在外部做这个工作.
//如果不够192 ,很显然是不会去掉前六个字节的.
//如果最后一组只有不到六个的时候,也可能会出错.
BYTE * m_pTempBuf = NULL ;
BYTE * pTempBuf = NULL ;
int counst = m_item.size ;//未读数据的长度
char sRead[6];
short * m_pData;
if ( m_item.size/192 > 0 )
{
m_pTempBuf = new BYTE[(m_item.size/192)*186];
}else if ( m_item.size > 0 )
{
m_pTempBuf = new BYTE[m_item.size];
}
pTempBuf = m_pTempBuf ;//游标
if (NULL != pTempBuf)
{
for(DWORD j=0;j<=m_item.size/192;j++)
{
mfile.Read(sRead, (counst > 6)?6:counst );//如果不到六个,就只读余下的,否则读六个.
counst -= ((counst > 6)?6:counst ); //余下的数据
mfile.Read(pTempBuf, ( counst > 186 ) ? 186 : counst );//如果不到186个,就只读余下的,否则读186个.
counst -= ((counst > 186)?186:counst ); //余下的数据
pTempBuf+=186;
}
}
m_pData = (short *)m_pTempBuf;
//m_pData可要记得在使用完后要delete.