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

  • 相关阅读:
    崩漏
    李翰卿治疗小儿五更咳嗽经验
    34名国宝级名老中医秘方集锦(一)
    黄煌儿科经方
    中医临床参考
    HTML 动态云启动画面
    CANVAS 水波动态背景
    PHP MYSQL单向同步方案
    PHP 获取指定目录下所有文件(包含子目录)
    JS 深度拷贝 Object Array
  • 原文地址:https://www.cnblogs.com/MakeView660/p/6527126.html
Copyright © 2011-2022 走看看