Проблема с удалением папок

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _nic, 28 Aug 2008.

  1. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Использую 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 :confused:
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Как вариант попробуй зающать алгоритм рекурсивного удаления каталога.
    Или на крайняк почитай вот тут вот обсуждался этот вопрос и было найдено решение.
    hxxp://www.sources.ru/NonCGI/Forum2/HTML/002353.html
     
  3. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Как оказалось надо было всего лишь это
    Code:
    buf+='\0';
    
    добавить что бы заработало.
    _______________________________
    блин я в абсолютном шоке :eek: Никогда такого невидел :mad: То абсолютно нормально все каталоги отрабатывает ,то какого то всеравно ругается что нельзя получить доступ к файлу :confused:
     
    #3 _nic, 28 Aug 2008
    Last edited: 28 Aug 2008
  4. o_OBallers

    o_OBallers Banned

    Joined:
    11 Oct 2007
    Messages:
    23
    Likes Received:
    24
    Reputations:
    0
    Файлы поди read-only, вначале ставь нужный атрибут на все файлы и папки, а потом только удаляй. Как вариант удаляй с помощью shell.

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

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Бли вообще фигня какае то ,папка удаляется а месседжбокс с матюком всеравно вылазит.Может можно как то его отловить и ОК на нем програмно нажать?
     
  6. ExZoD

    ExZoD Member

    Joined:
    4 Jun 2008
    Messages:
    23
    Likes Received:
    6
    Reputations:
    0
    на какой конкретно строке материться?
     
  7. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Хрен знает какое исключение которое обрабатывается внутри самой SHFileOperation ,что тут неясного?