Не находит файл-папку

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
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:
Ответить