我初学MFC,在使用m_DateFrom.SetFormat(_T("yyyyMMdd"));(这里m_DateFrom是一个CDateTimeCtrl对象)运行程序老是有一个断言错误。我又不知道怎么找出这个怎么回事。
BOOL CRentDlg::OnInitDialog()
{
CDialog::OnInitDialog();

m_rentInfoList.InsertColumn(0,"ID",LVCFMT_LEFT,40,-1);
m_rentInfoList.InsertColumn(1,"租借人",LVCFMT_LEFT,160,-1);
m_rentInfoList.InsertColumn(2,"租借DVD名",LVCFMT_LEFT,200,-1);
m_rentInfoList.InsertColumn(3,"租借日期",LVCFMT_LEFT,160,-1);
m_rentInfoList.SetExtendedStyle(LVS_EX_FULLROWSELECT||LVS_EX_GRIDLINES);

m_DateFrom.SetFormat("yyyyMMdd");//这句会出错
      ...............
}

解决方案 »

  1.   

    m_DateFrom.SetFormat("yyyyMMdd");//这句会出错
    //断言错误就跟进去看看是什么断言错误?
      

  2.   

    m_DateFrom.SetFormat(_T("dd-MMM-yy"));
      

  3.   

    会不会是data ctrl没有初始化?
      

  4.   

    断言提示在oleconn.cpp的第55行,可是,我根本就没有那个文件呀。m_DateFrom.SetFormat(_T("dd-MMM-yy"));
    我也试过了呀。也是不能用。还有,我也上网去找人家的代码。
    如:
    CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER_FROM);
    ASSERT(pCtrl != NULL);
    pCtrl->SetFormat(_T("dd-MMM-yy"));
    可是也不能用。
      

  5.   

    m_DateFrom如果不是时间控件关联的变量就要初始化
      

  6.   

     
    问题是,我试了,其他的方法也不行呀。
    CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER_FROM); 
    ASSERT(pCtrl != NULL); 
    pCtrl->SetFormat(_T("dd-MMM-yy")); 
    这个方法。直接获取指针,在ASSERT(pCtrl != NULL);没有错呀。
    可是pCtrl->SetFormat(....);就错了, 参数我也试了好多个,都是那个断言错误。调试进去,都是汇编,看半天,调来调去
    的根本理不出来。
      

  7.   

     lz 重新定义m_DateFrom试试,
     CTime DateFrom 或者COleDataTime m_DateFrom
      

  8.   

    如果初始化为空m_DateFrom.SetFormat(" ")要注意在双引号中间加个空格
      

  9.   

    建议你重新建立一个测试工程,在里面就加一个DateTimeCtrl的控件,然后再SetFormat,看看有没有问题。
    我觉得这样应当没有问题的。然后你再好好对比一下你现在的工程和测试工程相关代码之间的区别,应当就可以发现问题所在了。
      

  10.   

    新建一个也不行呀。我晕。该对象的其他成员方法都可以用呀。就是那个setFormat不能用,我试了,SetTime方法。
    可以用,不会出现断言错误呀。
      

  11.   

    在DoDataExchange中看变量关联成功没?
      

  12.   

    CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER_FROM); 
    ASSERT(pCtrl != NULL); 
    //这个断言说明没有取到IDC_DATETIMEPICKER_FROM,检查关联是否出错了。
      

  13.   

    难道说我的VC++有问题,刚才用verify测了一下,m_DateFrom所调用的函数,结果,都有错。函数没有调用成功。
    可是对象我都有关联了,初始化了。
    而且用下面的方法,去
    CDateTimeCtrl* pCtrl = (CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER_FROM); 
    ASSERT(pCtrl != NULL); 
    VERIFY(pCtrl->SetFormat(_T("dd-MMM-yy")));
    也不行呀。这应该就不是对象没有初始化的问题了吧。 
    哪一位高手能帮我解决,我给加分呀。
      

  14.   

    我的也是这样的问题啊,VC出问题吗,我都重装了好几次了,还是一样不能用啊,我是昨天重装系统后才出现这样的,前天都还可以,除了重装VC还有什么办法啊