天快亮了。赶紧一贴,睡觉!!很简单的问题,班分相赠
有类CLabelView{
int i_IndexInQuery;
TADOQuery * m_Query;
};
。其部分成员函数如下
void CLabelView::NextPage()
{
i_IndexInQuery+=NumOfSongOnScreen;
if(i_IndexInQuery>(m_Query->RecordCount) )
{
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ShowMessage("i_IndexInQuery beyond the RecordCount");
//just for testing
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
i_IndexInQuery=m_Query->RecordCount-NumOfSongOnScreen; //or +1?
}
this->GetDataFromQuery() ;
for(int j=0;j<NumOfSongOnScreen;j++)
b_Select[j]=false;//reset the flags
}
void CLabelView::GetDataFromQuery()
{
AnsiString kk,jj;
if(!m_Query->IsEmpty ())
{
this->m_Query->First ();
int j;
for(j=1;j<i_IndexInQuery;j++)
if(!m_Query->Eof )
m_Query->Next();
else break ;
int i;
for (i=0;i<NumOfSongOnScreen;i++)
{
kk=AnsiString(m_Query->FieldByName ("SongID")->Value) + "\0";
strcpy(this->a_SongOnScreen[i].SongID,kk.c_str()) ;
jj=AnsiString(m_Query->FieldByName ("SongName")->Value) + "\0";
strcpy(this->a_SongOnScreen[i].SongName,jj.c_str()) ;
if(!m_Query->Eof)
m_Query->Next();
else break;
}
}
构造函数中i_IndexInQuery=1,第一次调用后i_IndexInQuery结果为9,正常。m_Query->RecordCount=5592。而紧接着第二次调用NextPage()后发现i_IndexInQuery一下子变成一个很大的数,很奇怪。这是为什么?
第二个问题,我的LabelView函数中有NumOfSongOnScreen个对象(即this->a_SongOnScreen[i]数组)。为什么,第一个到第五个,以及第七个都能够正常的复制给Label->Caption,偏偏第六个不行呢?