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

  • Автор темы B22
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B
#1
Всем привет!

Народ - помогите!
Вот есть у меня массив 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

КАК МНЕ ЭТО СДЕЛАТЬ?
 
M

Maxx

#2
создаешь большую строку чтобы влезли все имена файлов (не забудь выделить место для \0), копируешь их туда и отправляешь функции SHFileOperation
 
B
#3
Я пишу так:
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();
А потом выдается ошибка -
"Не удается удалить файл. Неудается произвести чтение из файла или диска"
 
S

sdriver

#4
Вернемся к 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

Код реализации функции в студию.Помогем.
 
B
#5
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);
 

Kmet

Java Team
25.05.2006
1 036
8
#6
Код:
str=str+ArrayFindFiles[m_Total-(i+1)]+"\0";
+"\0" скорее всего обрабатывается так как Вы ожидаете, потому что "\0"==""
 
P

Partisan

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

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

надо писать

'\0' (одинарные кавычки=один символ)
 
Статус
Закрыто для дальнейших ответов.