PDA

Просмотр полной версии : Не находит файл-папку



AlexDav
16.11.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
17.11.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: