Удаление файлов

Тема в разделе "MS Visual C++", создана пользователем B22, 13 авг 2006.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. B22

    B22 Гость

    Всем привет!

    Народ - помогите!
    Вот есть у меня массив CString - ArrayFindFiles. В этот массив заносятся имена и пути к файлам. Потом мне необходимо удалить все эти файлы из массива в корзину с помощью функции SHFileOperation. Там, как я знаю в структуру должна передаваться строка в которой файлы разделяются (\0) - нуль символом, а в конце строки должно быть два (\0\0).
    У меня масив выглядит примерно так:
    C:\Temp\Temp_1.txt
    C:\Temp\Temp_2.txt
    C:\Temp\Proba.txt

    А строка в памяти должна иметь вид C:\Temp\Temp_1.txt\0C:\Temp\Temp_2.txt\0C:\Temp\Proba.txt\0\0

    КАК МНЕ ЭТО СДЕЛАТЬ?
     
  2. Maxx

    Maxx Гость

    создаешь большую строку чтобы влезли все имена файлов (не забудь выделить место для \0), копируешь их туда и отправляешь функции SHFileOperation
     
  3. B22

    B22 Гость

    Я пишу так:
    int i;
    СString str="";
    for(i=0;i<m_Total;i++)
    {
    str=str+ArrayFindFiles[m_Total-(i+1)]+"\0";
    }
    str=str+"\0";

    char* pSTR=str.GetBuffer();
    А потом выдается ошибка -
    "Не удается удалить файл. Неудается произвести чтение из файла или диска"
     
  4. sdriver

    sdriver Гость

    Вернемся к MSDN:

    int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp
    );


    typedef struct _SHFILEOPSTRUCT {
    HWND hwnd;
    UINT wFunc;
    LPCTSTR pFrom;
    LPCTSTR pTo;
    FILEOP_FLAGS fFlags;
    BOOL fAnyOperationsAborted;
    LPVOID hNameMappings;
    LPCTSTR lpszProgressTitle;
    } SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

    File deletion is recursive unless you set the FOF_NORECURSION flag in lpFileOp

    Код реализации функции в студию.Помогем.
     
  5. B22

    B22 Гость

    int i;
    СString str="";
    for(i=0;i<m_Total;i++)
    {
    str=str+ArrayFindFiles[m_Total-(i+1)]+"\0";
    }
    str=str+"\0";
    char* pSTR=str.GetBuffer();
    SHFILEOPSTRUCT opstruc;
    opstruc.hwnd=NULL;
    opstruc.wFunc=FO_DELETE;
    opstruc.pFrom=pSTR;
    opstruc.pTo=NULL;
    opstruc.fFlags = FOF_ALLOWUNDO|FOF_SIMPLEPROGRESS;
    opstruc.lpszProgressTitle = "Удаление файлов";
    SHFileOperation(&opstruc);
     
  6. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.032
    Симпатии:
    6
    Код (Text):
    str=str+ArrayFindFiles[m_Total-(i+1)]+"\0";
    +"\0" скорее всего обрабатывается так как Вы ожидаете, потому что "\0"==""
     
  7. Partisan

    Partisan Гость

    У меня такое чувство, что вместо

    "\0"(двойные кавычки=строка символов)

    надо писать

    '\0' (одинарные кавычки=один символ)
     
  8. B22

    B22 Гость

    И правда - написал:
    и ВСЕ заработало :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей