Общие вопросы, не зависящие от языка реализации.
Модераторы: Duncon , Hawk , Romeo , Eugie
AlexDav
Сообщения: 34 Зарегистрирован: 18 окт 2005, 15:37
16 ноя 2005, 10:30
Код: Выделить всё
void CStrageDlg::OnBnClickedOk()
{
CFileFind finderfile;
CStringW strName("*.*");
CString strPath;
::SetCurrentDirectory(_T("C:\\"));
if(finderfile.FindFile(NULL,0))
{
while(finderfile.FindNextFileW())
{
if(finderfile.IsDirectory())
{
CString strN = finderfile.GetFileName();
if(strN.CompareNoCase(_T("As"))==0)
{
strPath = finderfile.GetFilePath();
strPath.Replace(_T("\\"),_T("\\\\"));
SetDlgItemTextW(IDC_STATIC,strPath);
CFileStatus status;
status.m_attribute = 0;
CFile::SetStatus(strPath, status);
SHFILEOPSTRUCT fa;
fa.hNameMappings = NULL;
fa.hwnd = m_hWnd;
strPath += '\x0';
fa.pFrom = strPath;
fa.pTo = NULL;
fa.wFunc = FO_DELETE;
int nRes = ::SHFileOperation(&fa);
}
} //if(finderfile.IsDirectory())
} //while(finderfile.FindNextFileW())
} //if(finderfile.FindFile(NULL,0))
else
{
MessageError("Finder");
}
} //void CStrageDlg::OnBnClickedOk()
На работе на обычном PC папку "As" находит без проблем и удаляет, а вот запускаю на ноутбуке (Windows XP Home) там все папки переберает а нужную не находит ??? и название менял - не находит и все - ничего не монимаю - может ошибка у меня какая?? Гляньте, а?
AlexDav
Сообщения: 34 Зарегистрирован: 18 окт 2005, 15:37
17 ноя 2005, 09:46
Разобрался сам, вот так правильно
Код: Выделить всё
void CStrageDlg::OnBnClickedOk()
{
CFileFind finderfile;
CStringW strName("*.*");
CString strPath;
SetCurrentDirectory(_T("C:\\"));
BOOL WhileBool = finderfile.FindFile(NULL,0);
while(WhileBool)
{
WhileBool = finderfile.FindNextFile();
if(finderfile.IsDirectory())
{
CString strN = finderfile.GetFileName();
if(strN.CompareNoCase(_T("dddd"))==0)
{
strPath = finderfile.GetFilePath();
strPath.Replace(_T("\\"),_T("\\\\"));
SetDlgItemTextW(IDC_STATIC,strPath);
CFileStatus status;
status.m_attribute = 0;
CFile::SetStatus(strPath, status);
SHFILEOPSTRUCT fa;
fa.hNameMappings = NULL;
fa.hwnd = m_hWnd;
strPath += '\x0';
fa.pFrom = strPath;
fa.pTo = NULL;
fa.wFunc = FO_DELETE;
int nRes = ::SHFileOperation(&fa);
}
} // if(finderfile.IsDirectory())
} // while(WhileBool)
} // void CStrageDlg::OnBnClickedOk()
Как я понял когда доходим до последней папки FindNextFile() возвращает FALSE но на эту папку позиционируется!!! :shock: