Использую Borland Developer Studio 2006 Вот такой вод код.Пытаюсь удалить выбранные папки. Code: 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
Как вариант попробуй зающать алгоритм рекурсивного удаления каталога. Или на крайняк почитай вот тут вот обсуждался этот вопрос и было найдено решение. hxxp://www.sources.ru/NonCGI/Forum2/HTML/002353.html
Как оказалось надо было всего лишь это Code: buf+='\0'; добавить что бы заработало. _______________________________ блин я в абсолютном шоке Никогда такого невидел То абсолютно нормально все каталоги отрабатывает ,то какого то всеравно ругается что нельзя получить доступ к файлу
Файлы поди read-only, вначале ставь нужный атрибут на все файлы и папки, а потом только удаляй. Как вариант удаляй с помощью shell. Рукодельник.
Бли вообще фигня какае то ,папка удаляется а месседжбокс с матюком всеравно вылазит.Может можно как то его отловить и ОК на нем програмно нажать?