Kuks |
Отправлено: 23.06.2006, 10:49 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Не работает! Почему?
|
|
seg_r |
Отправлено: 23.06.2006, 11:37 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 74
|
по-моему делетефайлу надо точно знать, что удалаять...
а если все удалять, то через FindFirst, FindNext
З.Ы. ещеб путь указать было бы не плохо, иначе он сотрет че-нить не в той папке, в которой нужно...
|
|
Kuks |
Отправлено: 23.06.2006, 12:24 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Щас попробую!
|
|
Kuks |
Отправлено: 23.06.2006, 13:48 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
Покопался с архиве форума, нашел и сделал так:
CODE | AnsiString CurrDir = GetCurrentDir();
TSearchRec sr;
if (FindFirst(CurrDir + "\*.*",faAnyFile,sr) == 0)
while(FindNext(sr) == 0)
DeleteFile(sr.Name);
FindClose(sr);
SetCurrentDir(AppDir);
RemoveDir("Temp"); |
|
|
Gedeon |
Отправлено: 23.06.2006, 14:08 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
CODE |
//----------------------------------------------------------------------------
bool __stdcall OdLib::DeleteDir(char *Path)
{
//строка пути должна заканчиваться
//двумя нулями, что и делается т.е.
//добавляется еще 1 '\0'
char *IPath; //строка пути должна заканчиваться
IPath = (char*)malloc(lstrlen(Path)+2); //двумя нулями, что и делается в
strcpy(IPath,Path); //первых четырех строках т.е.
IPath[lstrlen(IPath)+1]='\0'; //добавляется еще 1 '\0'
SHFILEOPSTRUCT strFileOp; //заполняем параметры структуры
strFileOp.hwnd = NULL;
strFileOp.wFunc = FO_DELETE;
strFileOp.pFrom = IPath;
strFileOp.pTo = NULL;
strFileOp.fFlags = FOF_NOCONFIRMATION;
if(!SHFileOperation(&strFileOp)) return false;
free(IPath);
return true;
}
|
|
|
viva |
Отправлено: 23.06.2006, 15:21 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
QUOTE (Kuks @ 23/06/2006, 13:48) | Покопался с архиве форума, нашел и сделал так:
CODE | AnsiString CurrDir = GetCurrentDir();
TSearchRec sr;
if (FindFirst(CurrDir + "\*.*",faAnyFile,sr) == 0)
while(FindNext(sr) == 0)
DeleteFile(sr.Name);
FindClose(sr);
SetCurrentDir(AppDir);
RemoveDir("Temp"); |
|
FindFirst/FindNext возвращают и каталоги ".", ".."! Не уверен, что их удаление не приведёт к чему-нибудь нехорошему.(Правда сам не проверял). А вот GetCurrentDir использовать для каталога, файлы которого удаляются не рекомендую. Лучше это задавать как-то иначе.
Судя по последней строке требуется удалять каталог "Temp", так вот его и задавай.
И последнее: строку
CODE | if (FindFirst(CurrDir + "\*.*",faAnyFile,sr) == 0) |
лучше писать как
CODE | if (FindFirst(IncludeTrailingPathDelimiter(CurrDir) + "*.*",faAnyFile,sr) == 0) | |
|