Очистка диска
Листинг 10.14. Очистка диска.
#include <vcl.h> #pragma hdrstop #include "clear_.h" #include <FileCTRL.hpp> // для доступа к SelectDirectory #pragma package(smart_init) #pragma resource "*.dfm" TForml *Forml; __fastcall TForml::TForml(TComponent* Owner) : TForm(Owner) { } AnsiString Directory; // каталог, в котором находятся проекты C++ Builder AnsiString cDir; // текущий каталог AnsiString FileExt; // расширение файла int n = 0; // количество удаленных файлов // щелчок на кнопке Каталог void__fastcall TForml::ButtonlClick(TObject *Sender) { AnsiString dir; // каталог, который выбрал пользователь if (SelectDirectory("Выберите каталог","", dir)) { // диалог Выбор файла завершен щелчком на кнопке ОК Editl-XText = dir; Button2 › Enabled = true; // теперь кнопка Выполнить доступна }; } // удаляет ненужные файлы из текущего каталога и его подкаталогов void __fastcall Clear(void) { TSearchRec SearchRec; // информация о файле или каталоге cDir = GetCurrentDir()+"\\"; if (FindFirst("*.*", faArchive,SearchRec) ==0) do { // проверим расширение файла int p = SearchRec.Name.Pos("."); FileExt = SearchRec.Name.Substring(p+1,MAX_PATH); if ((FileExt[1] == '-') II (FileExt == "obj") || (FileExt = "tds")) { Forml › Memol › Lines › Add(cDir+SearchRec.Name); DeleteFile(SearchRec.Name); П++; } } while (FindNext(SearchRec) == 0); // обработка подкаталогов текущего каталога if (FindFirst("*", faDirectory, SearchRec) == 0) do if ((SearchRec.Attr & faDirectory) = SearchRec.Attr) { // каталоги ".." и "." тоже каталоги, // но в них входить не надо!!! if ((SearchRec.Name!=".") && (SearchRec.Name!= "..")) { ChDir(SearchRec.Name); // войти в подкаталог Clear(); // очистить каталог ChDir(".."); / выйти из каталога }; } while (FindNext(SearchRec) == 0); } // щелчок на кнопке Выполнить void__fastcall TForml::Button2Click(TObject *Sender) { Memol › Clear(); // очистить поле Memol Directory = Edit1-XText;// каталог, который выбрал пользователь ChDir(Directory); // войти в каталог Clear(); // очистить текущий каталог и его подкаталоги Memol › Lines › Add(""); if (n) Memol › Lines › Add("Удалено файлов: " + IntToStr(n)}; else Memol › Lines › Add( "В указанном каталоге нет файлов, которые надо удалить."); }