Иллюстрированный самоучитель по C++ Builder

Очистка диска

Листинг 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(
"В указанном каталоге нет файлов, которые надо удалить.");
 }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.