正常情况下是不会改变nIndex的,我想唯一可能的情况是lpszBuffer定义在nIndex之前,并且lpszBuffer缓冲区长度太小,造成溢出后改变了nIndex的值。是这样吗?

解决方案 »

  1.   

    请softsprite指教:你的判断太准确了!
    我的源代码是这样的:
             CSnset snset;//CSnset是一个记录集
    snset.Open ();
    int i=m_editctl.GetLineCount ();
    for(int nIndex=0;nIndex<i;nIndex++)
    {
        char snstr[]="";
                 snset.AddNew ();
        snset.SetFieldNull (&(snset.m_sn ), FALSE);
        snset.SetFieldNull (&(snset.m_ono ),FALSE);
        snset.m_ono =m_ono-1;
        m_editctl.GetLine (nIndex,snstr);
        snset.m_sn =snstr;
        snset.Update ();
    }
    这样好象只分配了5个字符给snstr.一开始的时候我用memset(snstr,20,'\0'),snstr就得不到值,但是我在C程序里这么用是可以的。
      

  2.   

    to softsprite:好的,分来啦!