PDA

Просмотр полной версии : Проблема с удалением папок


_nic
28.08.2008, 00:33
Использую Borland Developer Studio 2006 Вот такой вод код.Пытаюсь удалить выбранные папки.

char *flnames=new char[1024*1024];
void dlfls(void)
{
char *buf=new char[1024*1024];
for(;;)
{
strcpy(buf,flnames);
strtok(buf,"\n");
//strcat(buf,"\\");
ShowMessage(buf);
int res;
SHFILEOPSTRUCT fo;
ZeroMemory(&fo, sizeof(fo));
fo.hwnd = 0;
fo.pFrom = buf;
fo.wFunc = FO_DELETE;
fo.fFlags = FOF_NOCONFIRMATION;
res = SHFileOperation(&fo);
flnames+=strlen(buf);
if(strlen(flnames)==0){break;}
memset(buf,NULL,1024*1024);
}
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
memset(flnames,NULL,1024*1024);
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString Directory;
SelectDirectory("",WideString(""),Directory);
strcat(flnames,Directory.c_str());
strcat(flnames,"\n");
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
dlfls();
}

Выскакивает мессагбокс с матюком что нельзя произвети чтение с файла или с диска.Немогу понять в чем дело :( Ведь список папок составляется и разбирается нормально.Чего может ненравится SHFileOperation :confused:

slesh
28.08.2008, 09:42
Как вариант попробуй зающать алгоритм рекурсивного удаления каталога.
Или на крайняк почитай вот тут вот обсуждался этот вопрос и было найдено решение.
hxxp://www.sources.ru/NonCGI/Forum2/HTML/002353.html

_nic
28.08.2008, 14:57
Как оказалось надо было всего лишь это

buf+='\0';

добавить что бы заработало.
_______________________________
блин я в абсолютном шоке :eek: Никогда такого невидел :mad: То абсолютно нормально все каталоги отрабатывает ,то какого то всеравно ругается что нельзя получить доступ к файлу :confused:

o_OBallers
29.08.2008, 16:04
Файлы поди read-only, вначале ставь нужный атрибут на все файлы и папки, а потом только удаляй. Как вариант удаляй с помощью shell.

Рукодельник.

_nic
29.08.2008, 21:17
Бли вообще фигня какае то ,папка удаляется а месседжбокс с матюком всеравно вылазит.Может можно как то его отловить и ОК на нем програмно нажать?

ExZoD
30.08.2008, 00:24
на какой конкретно строке материться?

_nic
30.08.2008, 13:24
на какой конкретно строке материться?
Хрен знает какое исключение которое обрабатывается внутри самой SHFileOperation ,что тут неясного?