for(i = 0; i < len; i ++)
{
t_diff diff;
diff = m_diffArray[i];
if(start < 0)
{
start = end = diff.addr; //赋初值
}
int size;
size = end - start + 1;
if((diff.addr - end > 1) || (size >= 150) || len == 1)
{
tarFile.Seek(start, CFile::begin);
tarFile.Read(buff, size);
// write data to comm port start = end = diff.addr;
}
else
{
end = diff.addr;
}
}
*/
其中len是m_diffArray变长数组的长度,下面是m_diffArray的定义,其中存的addr地址有可能连续也有可能不连续,如果数组某一段地址是连续的,我就求出start和end还有size长度,执行到//write data to comm port,如果不连续就分多次写入.现在这个算法的问题是当数组中全是连续的数据时,不执行if((diff.addr - end > 1) || (size >= 150) || len == 1),如果len==2,size的长度又为1??怎么改正啊??大家帮忙指点一下!
typedef struct
{
unsigned int addr; //存地址
unsigned char value;//存数据
} t_diff; CArray<t_diff, t_diff &> m_diffArray;
{
t_diff diff;
diff = m_diffArray[i];
if(start < 0)
{
start = end = diff.addr; //赋初值
}
int size;
size = end - start + 1;
if((diff.addr - end > 1) || (size >= 150) || len == 1)
{
tarFile.Seek(start, CFile::begin);
tarFile.Read(buff, size);
// write data to comm port start = end = diff.addr;
}
else
{
end = diff.addr;
}
}
*/
其中len是m_diffArray变长数组的长度,下面是m_diffArray的定义,其中存的addr地址有可能连续也有可能不连续,如果数组某一段地址是连续的,我就求出start和end还有size长度,执行到//write data to comm port,如果不连续就分多次写入.现在这个算法的问题是当数组中全是连续的数据时,不执行if((diff.addr - end > 1) || (size >= 150) || len == 1),如果len==2,size的长度又为1??怎么改正啊??大家帮忙指点一下!
typedef struct
{
unsigned int addr; //存地址
unsigned char value;//存数据
} t_diff; CArray<t_diff, t_diff &> m_diffArray;
问题是现在如果只有前一部分,那if语句的条件(diff.addr - end > 1)就不符合条件了,所以不知道怎么改一下!?