WCE不支持CStdioFile么?

274960319   2008-3-13 14:44 楼主
不知道为什么 编译通过了 但是运行的时候却发生了错误:

error:Debug Asesertion Failed Failed!

f:\sp\vctors\vc7libsce\ship\atlmfc\src\mfc\filecore.cpp line 207   (207看不清楚不知道是297还是207)


相关的MFC函数:

void CFilterNumDlg::OnBnClickedFirst()
{
        printf("\n++++++++++++++++++++++++++++++++\n");
        // TODO: Add your control notification handler code here
        if(fnum==NULL)
        {
                printf("\nFirst \n");
                exit(1);
        }
        GetDlgItem(IDC_Preview)->EnableWindow(FALSE);
//        printf("\nL1\n");
        GetDlgItem(IDC_First)->EnableWindow(FALSE);
//        printf("\nL2\n");
        GetDlgItem(IDC_Next)->EnableWindow(TRUE);
//        printf("\nL3\n");
        GetDlgItem(IDC_End)->EnableWindow(TRUE);
//        printf("\nL4\n");
        m_editmobile.SetReadOnly(TRUE);
        printf("\nL5\n");
//        fnum.SeekToBegin();
        fnum.Seek(0,CFile::begin);               //这里出错了
        printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
        printf("\nL6\n");
        fnum.ReadString(m_mobile);
        printf("\nL7\n");
//        fseek(fnum,0,SEEK_SET);
//        fscanf(fnum,"%s",mobNum);       
//        m_mobile=(CString)mobNum;
        UpdateData(FALSE);
        printf("**************************\n");
               
}


但是在ininDLG函数中不知道为什么 open 没有问题啊

回复评论 (4)

open file 相关的函数:

BOOL CFilterNumDlg::OnInitDialog()
{
        CDialog::OnInitDialog();


        // Set the icon for this dialog.  The framework does this automatically
        //  when the application's main window is not a dialog
        SetIcon(m_hIcon, TRUE);                        // Set big icon
        SetIcon(m_hIcon, FALSE);                // Set small icon

        // TODO: Add extra initialization here
//        fnum=fopen("Filternum.txt","wb");
        printf("\nfile open here\n");
        fnum.Open(L"FilterNum.txt",CFile::modeCreate||CFile::modeWrite);//modeRead
        printf("file open ok\n");
        if(fnum==NULL)
        {
                MessageBox(L"ODBC Connection Faile!",NULL,MB_OK);
                CDialog::EndDialog(0);
                GetParent()->PostMessage(WM_CLOSE);
        }

        return TRUE;  // return TRUE  unless you set the focus to a control
}
点赞  2008-3-13 14:49
我把 FilterNum.txt 和.exe放在同一个文件夹下

但是如果我增加了判断

        if(!(fnum.Open(L"FilterNum.txt",CFile::modeRead||CFile::modeWrite)));
        {
                printf("\nERROR\n");
        }

这里竟然会打印出error

这是为什么啊?

难道Open() 的文件名 添加了 L标志就不对么? 还是我把txt文件放错了呢 谢谢
点赞  2008-3-13 15:06
if 后面多写了一个分号

但是不知道为什么 既然 open都对了

fnum.Seek(0,CFile::begin);  却死了
点赞  2008-3-13 15:26
我怎么就没看明白,你用的Open会返回真,我记得在Ce下,所有用到的文件都一定要是绝对路径的.
点赞  2008-3-18 10:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复