Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Срочно!!! посмотрите плиз код - Recursive Deleting Folders

5.9K
19 января 2004 года
dies
5 / / 19.01.2004
.. предварительно папки очищены от содержания, в смысле от файлов (просто так нужно было сделать Ж))

есть две функции:

// удаление списка папок.
int DeleteFolders(CString strPathDir)
{
// getting a list of a folders
std::vector<CString> vector;
std::vector<CString>::iterator it;
vector = GetFoldersToDel(strPathDir);

for(it=vector.begin(); it!=vector.end();++it)
if (!RemoveDirectory(*it)) {
// send error message
return 0;
}
return 1;
}

// составление списка на удаление
TCSVector GetFoldersToDel(CString strPathDir)
{
HANDLE hFile;
CString str;
CString strFileName;
CString strPathFile;
std::vector<CString> vector,tvector;
std::vector<CString>::iterator it;

WIN32_FIND_DATA FindFileData;

//Find First Folder
str = strPathDir;
strPathFile = strPathDir;
str+="\\*";

hFile = FindFirstFile(str.GetBuffer(str.GetLength()),&FindFileData);
if (hFile==INVALID_HANDLE_VALUE) {
FindClose(hFile);
return vector;
}

do {
strFileName = FindFileData.cFileName;
if (!strcmp(FindFileData.cFileName,"."))continue;
else if (!strcmp(FindFileData.cFileName,".."))continue;
else {
strPathFile = strPathDir;
strPathFile += "\\";
strPathFile += strFileName;
if (CheckDirectoryExist(strPathFile.GetBuffer(strPathFile.GetLength()))) {
tvector = GetFoldersToDel(strPathFile.GetBuffer(strPathFile.GetLength()));
for (it = tvector.begin(); it != tvector.end(); ++it)
vector.push_back(*it);
vector.push_back(strPathFile.GetBuffer(strPathFile.GetLength()));
}
}
} while(FindNextFile(hFile,&FindFileData));
FindClose(hFile);
return vector;
}



суть вопроса в том, что список-то составляется.. только на этапе удаления RemoveDirectory() завершается с ошибкой 32 - The process cannot access the file because it is being used by another process.

Вопрос: что я сделал не так или почему нет доступа к файлам.. ведь дело в коде - а я все же закрываю HANDLE hFile: FindClose(hFile);
???
4.8K
20 января 2004 года
Владислав
19 / / 28.09.2003
Цитата:
Originally posted by dies
.. предварительно папки очищены от содержания, в смысле от файлов (просто так нужно было сделать Ж))

есть две функции:

// удаление списка папок.
.........
// составление списка на удаление
.........

суть вопроса в том, что список-то составляется.. только на этапе удаления RemoveDirectory() завершается с ошибкой 32 - The process cannot access the file because it is being used by another process.

Вопрос: что я сделал не так или почему нет доступа к файлам.. ведь дело в коде - а я все же закрываю HANDLE hFile: FindClose(hFile);
???



Код практически не смотрел, вроде там всё нормально.
Твоя ошибка - The process cannot access the file because it is being used by another process переводится как - Процесс не может поиметь доступ к файлу т.к. этот файл использует ДРУГОЙ процесс. Т.е. твой код здесь не причём, какой - то другой процесс юзает директорию и поэтому ты её не можешь удалить. Если удалить всё - же очень надо, то решение есть, пиши, я ссылки поищу. Но решение сложное.

5.9K
20 января 2004 года
dies
5 / / 19.01.2004
Цитата:
Originally posted by Владислав


Код практически не смотрел, вроде там всё нормально.
Твоя ошибка - The process cannot access the file because it is being used by another process переводится как - Процесс не может поиметь доступ к файлу т.к. этот файл использует ДРУГОЙ процесс. Т.е. твой код здесь не причём, какой - то другой процесс юзает директорию и поэтому ты её не можешь удалить. Если удалить всё - же очень надо, то решение есть, пиши, я ссылки поищу. Но решение сложное.



все же проблемма в моем коде. а ссылки кидай сюда, если не сложно...

435
21 января 2004 года
avatara
188 / / 07.07.2003
Цитата:
Originally posted by dies


все же проблемма в моем коде. а ссылки кидай сюда, если не сложно...


Посмотри тему ниже, там я примерчик скинул.

5.9K
21 января 2004 года
dies
5 / / 19.01.2004
Цитата:
Originally posted by avatara

Посмотри тему ниже, там я примерчик скинул.



ок, сенкс

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог