Проблема При Удалении Директории.

Тема в разделе "MS Visual C++", создана пользователем 4ygynOK, 7 окт 2013.

  1. 4ygynOK

    4ygynOK New Member

    Регистрация:
    7 окт 2013
    Сообщения:
    1
    Симпатии:
    0
    Существует функция для удаления директории:
    Код (Text):
    BOOL DeleteDir(DWORD B_Id)
    {
    ASSERT(m_pDatabaseMng);
    if (!m_pDatabaseMng)
    return FALSE;

    try
    {
    std::list<DWORD> lstIds;

    CString sSQL;
    sSQL.Format(_T("SELECT ID FROM BUGO WHERE PARENT_ID=%d"), B_Id);

    ADODB::_RecordsetPtr spRS = m_pDatabaseMng->OpenRecordset(sSQL);
    long nRecordCount = spRS->GetRecordCount();

    for (long nRecord = 0; nRecord < nRecordCount; ++nRecord)
    {
    lstIds.push_back((long)spRS->GetFields()->GetItem(_T("ID"))->GetValue());
    spRS->MoveNext();
    }

    spRS->Close();

    for (std::list<DWORD>::iterator it = lstIds.begin(); it != lstIds.end(); ++it)
    if (!DeleteDir(*it))
    return FALSE;

    sSQL.Format(_T("DELETE FROM BUGO WHERE ID=%d"), B_Id);
    VERIFY(m_pDatabaseMng->ExecuteSQL(sSQL));
    return TRUE;
    }
    catch (_com_error& e)
    {
    if(AfxMessageBox(CString(_T("Удаление каталога невозможно!\n")) + (LPCTSTR)e.Description()+ CString(_T("\nПродолжить удаление?")),MB_OKCANCEL)== IDYES);
    }

    return FALSE;
    }
    На данный момент происходит следующее если мы не можем удалить директорию, то вываливается сообщение из catch при нажатии на кнопку ОК удаляются все каталоги до достижения условия if (!DeleteDir(*it)).
    Теперь вопрос как мне сделать так чтобы при нажатии на кнопку ОК у меня удалялись все возможные директории, а не до первой, которую невозможно удалить. А при нажатии на ОТМЕНА происходило то что и сейчас(т.е удаление до первой директории которую нельзя удалить).
    Прошу помощи уважаемые...
     
Загрузка...

Поделиться этой страницей