Страница 1 из 1
Не находит файл-папку
Добавлено: 16 ноя 2005, 10:30
AlexDav
Код: Выделить всё
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) там все папки переберает а нужную не находит ??? и название менял - не находит и все - ничего не монимаю - может ошибка у меня какая?? Гляньте, а?
Добавлено: 17 ноя 2005, 09:46
AlexDav
Разобрался сам, вот так правильно
Код: Выделить всё
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: