我把一个edit框的成员变量为m_chengben;
然后定义一个CString 
CString a="fsadfsa";
然后
m_chengben=a;
编译通过,然后执行就会非法操作。为什么????
CString拷贝不就是直接用'='么?
还有用.format也不行。
很着急呀~~~~~~ 

解决方案 »

  1.   

    这应该不是CSTRING变量引起的,可能你程序其他地方有错,要把你的程序帖出来才能解决问题
      

  2.   

    很有可能你把变量定义错了,应当定义为CString-value;我也在线,有时请找我!呵呵
      

  3.   

    用.Format吧,没有问题的。用“=”赋值好象有点问题。
      

  4.   

    当然是CStringvoid CInfoView::ShowData(CString m_CName,CString m_CTime)
    {
    CString d="fdfds";
    m_chengben=d;// 这里就出错
    if (!dbInfo.IsOpen()) 
    {
         AfxMessageBox("数据库初始化错误!",MB_OK|MB_ICONEXCLAMATION);
    }
    else
    {
    CRecordset company(&dbInfo);
    CString strFilter,strname,strnumber,strtimes;
    CString strshouru,strchengben,strlirun,strfuzhai,strzichan,strcunhuo,strldzichan,strldfuzhai,stryshzhk,strpgshy
         ,strjzchshy,strjiage,strweilaichzhl,strchzhjzh,strnengli,strzhanlue,strzuzhi,strjyhdjshy,strffxfy; strFilter.Format("SELECT DISTINCT * FROM [company] WHERE [company].[CNumber]='%s'",m_CName);
    if (company.Open(CRecordset::snapshot, 
        strFilter, CRecordset::readOnly))///////////////需要修改表名
    {
    //AfxMessageBox(strFilter);
    int count=0;
               while(!company.IsEOF())
    {
    company.GetFieldValue("company",strname);
    company.GetFieldValue("CNumber",strnumber);
    count++;
    company.MoveNext();
    }
    company.Close();
    }
    CRecordset show(&dbInfo);
            strFilter.Format("SELECT DISTINCT * FROM [jibenxinxi] WHERE [jibenxinxi].[CNumber]='%s' AND [jibenxinxi].[date]='%s'",m_CName,m_CTime);
    if (show.Open(CRecordset::snapshot, 
        strFilter, CRecordset::readOnly))
    {
    int count=0;
    while(!show.IsEOF())
    {
    show.GetFieldValue("date",strtimes);
    show.GetFieldValue("CNumber",strnumber);
    show.GetFieldValue("zhuyingshouru",strshouru);
            show.GetFieldValue("zhuyingchengben",strchengben);
    show.GetFieldValue("jinglirun",strlirun);
    show.GetFieldValue("fuzhaiheji",strfuzhai);
            show.GetFieldValue("zichanzongji",strzichan);
    show.GetFieldValue("cunhuo",strcunhuo);
    show.GetFieldValue("liudongzichan",strldzichan);
    show.GetFieldValue("liudongfuzhai",strldfuzhai);
    show.GetFieldValue("yingshouzhangkuan",stryshzhk);
    show.GetFieldValue("PGshouyi",strpgshy);
    show.GetFieldValue("Jzchshy",strjzchshy);
    show.GetFieldValue("jiage",strjiage);
    show.GetFieldValue("weilaichzhl",strweilaichzhl);
    show.GetFieldValue("chzhjingzheng",strchzhjzh);
    show.GetFieldValue("nengli",strnengli);
    show.GetFieldValue("zhanlue",strzhanlue);
    show.GetFieldValue("zuzhi",strzuzhi);
    show.GetFieldValue("jyhdjingshouyi",strjyhdjshy);
    show.GetFieldValue("feifuxianfeiyong",strffxfy);
    count++;
    show.MoveNext();
    }
    show.Close();
    }
    m_chengben.Format("%s",strchengben);
    m_chzhjzh = strchzhjzh;
    m_company_name = strname;
    m_company_num = strnumber;
    m_cunhuo = strcunhuo;
    m_date = strtimes;
    m_fuxian = strffxfy;
    m_fuzhai = strfuzhai;
    m_jingshouyi = strjyhdjshy;
    m_jlrwlchzhl = strweilaichzhl;
    m_ldfuzhai = strldfuzhai;
    m_ldzch = strldzichan;
    m_lirun = strlirun;
    m_nengli = strnengli;
    m_pgshijia = strjiage;
    m_pgshouyi = strpgshy;
    m_shouru = strshouru;
    m_shouyilv = strjzchshy;
    m_xianjinjll = _T("");
    m_zchze = strzichan;
    m_yshzhangkuan = stryshzhk;
    m_zhanlue = strzhanlue;
    m_zuzhi = strzuzhi;
    }
    UpdateData(TRUE);
    }
      

  5.   

    字符串拷贝,=就行了。你看看是不是你对话框模板是怎么绑定的,有没有什么不存在的control确有绑定变量。例如,你有一个edit ,叫IDC_EDIT1,绑定变量m_str1;结果,等一下把IDC_EDIT1改名了,变成IDC_MYEDIT,但是并没有把m_str1删除,这样的话,就会非法操作。edit框的成员变量(什么意思?)绑定一个edit为m_chengben吗?
            ^^^^^^^
      

  6.   

    我下面用了,上面的是我加的,下面都会出错,第一句用的就是format
      

  7.   

    赞成 52001314(passenger)观点,屏蔽无关程序段仔细查查吧,写数据库程序变量很多,定义对话框变量后,有时自己不注意又该了些ID就很容易引起混乱的
      

  8.   

    你的edit框变量是不是CString类型的啊
      

  9.   

    void CMainFrame::OnGetActiveview() 
    {
    // TODO: Add your command handler code here
      CWnd *pWnd;
       pWnd=this->splitter1.GetActivePane();
       if(pWnd->IsKindOf(RUNTIME_CLASS(CFunView)))
     MessageBox("The Active view is CFunView");
       else
       {
     pWnd=this->splitter2.GetActivePane();
     if(pWnd->IsKindOf(RUNTIME_CLASS(CHelpView)))
    MessageBox("The Active view is CHelpView");
     else
       MessageBox("The Active view is CCalView");
       }

    }
      

  10.   

    你用了两个CSplitteWnd 变量
    这样在任何后只能有一个activePane,
    而你的代码 默认了splitter2 一定有焦点,
    但是,当splitter2 没有焦点是,就会出错
      

  11.   

    极有可能你的edit变量是control而不是value
    你还是把错误帖出来让大家看看
      

  12.   

    psusong(我心飞扬) 说:
    不要给空间变量直接赋值
    psusong(我心飞扬) 说:
    用SetWindowText()
    psusong(我心飞扬) 说:
    你的做法不符合系统的处理过车程,这样还不乱套