zoukankan      html  css  js  c++  java
  • VC++:Debug出错,提示错误在findfile.cpp (Line 369)

      调试程序的Debug版本,出现断言框,定位于库文件findfile.cpp 第369行: 

    void CFileFind::AssertValid() const
    {
        // if you trip the ASSERT in the else side, you've called
        // a Get() function without having done at least one
        // FindNext() call
    
        if (m_hContext == NULL)
            ASSERT(m_pFoundInfo == NULL && m_pNextInfo == NULL);
        else
            ASSERT(m_pFoundInfo != NULL && m_pNextInfo != NULL);   // 第369行
    }

      原程序:

    CFileFind finder;
    if(finder.FindFile(filename))
    {
        CString str = findfile.GetRoot();
        // do something ...
    }

      修改后:

    CFileFind finder;
    if(finder.FindFile(filename))
    {
        findfile.FindNextFile();
        CString str = findfile.GetRoot();
        // do something ...
    }

      正确的调用的次序应该是:FindFile,FindNextFile,GetFileName/GetRoot

      扩展:BOOL CFileFind::FindNextFile

    BOOL CFileFind::FindNextFile()
    {
        ASSERT(m_hContext != NULL);
     
        if (m_hContext == NULL)
            return FALSE;
        if (m_pFoundInfo == NULL)
            m_pFoundInfo = new WIN32_FIND_DATA;
     
        ASSERT_VALID(this);
     
        void* pTemp = m_pFoundInfo;
        m_pFoundInfo = m_pNextInfo;
        m_pNextInfo = pTemp;
     
        return ::FindNextFile(m_hContext, (LPWIN32_FIND_DATA) m_pNextInfo);
    }

      以下是MSDN中对于FindNextFile的说明:

      Call this member function to continue a file search from a previous call to FindFile. 

      You must call FindNextFile at least once before calling any of the following attribute member functions:

      •   GetCreationTime

      •   GetFileName

      •   GetFileTitle

      •   GetFilePath

      •   GetFileURL

      •   GetLastAccessTime

      •   GetLastWriteTime

      •   GetLength

      •   GetRoot

      •   IsArchived

      •   IsCompressed

      •   IsDirectory

      •   IsDots

      •   IsHidden

      •   IsNormal

      •   IsReadOnly

      •   IsSystem

      •   IsTemporary

      •   MatchesMask

  • 相关阅读:
    [HAOI2015]T2
    bzoj1036:[ZJOI2008]树的统计Count
    苹果树
    poj1151 Atlantis
    1593: [Usaco2008 Feb]Hotel 旅馆
    [JSOI2008]最大数maxnumber
    【HNOI2014】米特运输
    【HNOI2013】数列
    Luogu5221 Product
    【CQOI2014】数三角形
  • 原文地址:https://www.cnblogs.com/MakeView660/p/6527126.html
Copyright © 2011-2022 走看看