Форум — Ответы     (  К темам )
 ?  WiSucht: Как можно удалить какой либо каталог (30-12-2002 20:08:54)
Как можно удалить какой либо каталог вместе со всеми файлами в нём, и как удалять файлы по маске(например *.tx?)???
ЗАРАНЕЕ СПАСИБО!!!
 Георгий (31-12-2002 02:49:56)
Попробуй две API-шки:
DeleteFile
RemoveDirectory
если DeleteFile не работает с масками, то используй цикл:
hSearch=FindFirstFile(FolderName+"\\*.*",&FileData);
bool n=true;
if (hSearch!=INVALID_HANDLE_VALUE)
while(n)
{
DeleteFile(FileData.cFileName);
FindNextFile(hSearch,&FileData);
};
RemoveDirectory(FolderName.c_str());
должно сработать, если нет вложенных папок, а если есть, то делай рекурсивную функцию.
 Георгий (31-12-2002 02:50:11)
Попробуй две API-шки:
DeleteFile
RemoveDirectory
если DeleteFile не работает с масками, то используй цикл:
hSearch=FindFirstFile(FolderName+"\\*.*",&FileData);
bool n=true;
if (hSearch!=INVALID_HANDLE_VALUE)
while(n)
{
DeleteFile(FileData.cFileName);
n=FindNextFile(hSearch,&FileData);
};
RemoveDirectory(FolderName.c_str());
должно сработать, если нет вложенных папок, а если есть, то делай рекурсивную функцию.
 Георгий (31-12-2002 02:51:03)
Извини — впервом примере — опечатка
 Владимир (31-12-2002 18:28:43)
Искать файлы *.jpg в текущем каталоге
(можно задать *.tx*, *.txt, и т.д.)

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *me = new TStringList;
AnsiString currDir = GetCurrentDir();

// находим все файлы .jpg в текущей папке
TSearchRec sr;
if(FindFirst(currDir+"\\"+"*.jpg", faAnyFile, sr) == 0)
{
me->Add(currDir+"\\"+sr.Name); // заносим в me, а можем и удалить
while (FindNext(sr) == 0) me->Add(currDir+"\\"+sr.Name);
}
FindClose(sr);

if(!me->Count) { Beep(); ShowMessage("Не найдено !"); }
else ShowMessage(me->Text);
delete me;
}
 Владимир (31-12-2002 18:48:06)
>> // заносим в me, а можем и удалить
можем и удалить
DeleteFile(const AnsiString FileName)
а потом и
RemoveDir(const AnsiString Dir);