:: Меню ::

Головна
Передмова
СЕРЕДОВИЩЕ РОЗРОБКИ C++ BUILDER
Початок роботи
Перший проект
ПРАКТИКУМ ПРОГРАМУВАННЯ
Графіка
Мультимедіа
Бази даних
Компонент програміста
Консольне застосування
Довідкова система
Створення настановного диска
Приклади програм
C++ Builder — короткий довідник
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
зарплаты в москве По Вашему желанию мы сможем оказать Вам помощь в открытие счета в банке для накопления Ваших денежных средств и многие другие возможности станут Вам доступны. Мы приглашаем молодых девушек в возрасте от 18-30 лет, с красивыми внешними данными. Для нас опыт работы значения не имеет.

:: Лічильники ::

=

 

 

 

 

 

Очищення диска



Відкривши каталог якого-небудь проекту C++ Builder, можна побачити, що окрім файлів, складових проект і використовуваних компілятором для генерації виконуваного файлу (bpr-, dfm-, h- і срр-файлы), в каталозі є файли з розширенням obj, tds і ще декілька файлів, розширення яких починається значком ~ (мал. 10.20).



Мал. 10.20. Вміст каталога проекту "Перевірка знань". Файли, виділені кольором, після закінчення роботи над проектом можна видалити


Файли з розширенням tds і obj створює компілятор в процесі генерації виконуваного файлу. Це тимчасові файли. Після закінчення роботи над проектом вони не потрібні, і їх можна видалити, тим більше що розмір tds-файла може досягати декілька мегабайт. Файли, розширення яких починається значком ~ — це резервні копії відповідних файлів проекту. Після закінчення роботи над проектом їх теж можна видалити з диска.

Програма "Очищення диска" видаляє з поточного каталога і всіх його підкаталогів файли, які після закінчення роботи над проектом не потрібні (якщо видалити тимчасові файли проекту, робота над яким ще не завершена, то в процесі компіляції вони будуть створені знову).

Вікно програми "Очищення диска" на початку її роботи приведене на мал. 10.21. Для вибору каталога, який треба "почистити", використовується стандартне діалогове вікно Огляд тек, яке з'являється в результаті клацання на кнопці Каталог.



Мал. 10.21. Вікно програми "Очищення диска" на початку її роботи


Процес активізації процесу очищення активізує кнопка Виконати, яка стає доступною тільки після того, як користувач вибере каталог. В процесі очищення диска програма виводить в полі Memo імена видалених файлів.

Вид форми програми приведений на мал. 10.22. Після того, як компоненти будуть додані у форму, необхідно виконати їх налаштування — задати значення властивостей (таблиця. 10.7).

Текст програми "Очищення диска" приведений в лістингу 10.14.

Таблиця 10.7. Налаштування компонентів


Компонент

Властивість

Значення

Коментар

Form1

Borderstyle

bssingle

Тонка межа вікна. Під час роботи програми не можна змінити розмір вікна, захопивши межу мишею

Form1

Borderlcins .bimaximize

false

Під час роботи програми в заголовку вікна немає кнопки Розвернути

Button2

Enabled

false

На початку роботи програми кнопка Виконати недоступна

Memol

Scrollbars

ssvertical

Є вертикальна смуга прокрутки



Мал. 10.22. Форма програми "Очищення диска"


 Лістинг 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(
"У вказаному каталозі немає файлів, які треба видалити.");
 }

Основну роботу (видалення файлів) виконує рекурсивна функція clear (рекурсивною називають функцію, яка в процесі роботи викликає сама себе). Рішення реалізувати функцію clear як рекурсивну не випадково: функція обробляє каталоги комп'ютера, які є рекурсивними об'єктами. Рекурсивним називають об'єкт, що частково складається з об'єктів цього ж типу.

Алгоритм функції clear приведений на мал. 10.23.



Мал. 10.23. Алгоритм функції Clear


Спочатку функція clear обробляє поточний каталог: проглядає всі файли і видаляє ті, які треба видалити. Проглядання файлів забезпечують функції Findfirst і Findnext . Функція Findfirst проглядає каталог, вказаний при її виклику, і записує в структуру searchrec ім'я першого із знайдених файлів, ім'я якого відповідає масці. У даній програмі маска *.* тобто функція вибирає перший по порядку файл. Якщо файл знайдений, то виконується перевірка його розширення. Якщо розширення файлу obj, tds або починається із значка ~, те ім'я файлу додається в полі Memo1 а сам файл віддаляється з диска. Видаляє файл функція Deletefiie . Після обробки першого файлу для пошуку наступного викликається функція Findnext . Після того, як всі файли поточного каталога будуть оброблені, функція clear перевіряє, чи є в поточному каталозі підкаталоги. Перевірку виконує функція Findfirst якою як параметр передається константа fadirectory що інформує функцію про те, що треба шукати імена каталогів, а не файлів. Якщо в поточному каталозі немає підкаталогів, то функція clear завершує роботу. Якщо в поточному каталозі є підкаталоги, то виконується вхід в підкаталог (робить це функція choir ) і виклик функції clear (для обробки підкаталогу функція викликає саму себе). Якщо в поточному каталозі немає необроблених каталогів, то вона завершує роботу і повертає управління функції clear яка її викликала і яка після цього продовжує обробку "своїх" підкаталогів.

Виведення вікна Огляд тек виконує функція selectdirectory яку викликає функція обробки події click на кнопці Каталог. Для доступу до цієї функції в текст програми треба включити директиву #include <Filectrl.hpp>.

 


Недорогие volgogradok.net/ankets/cheap .
x

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Реклама ::


:: Посилання ::

-


 

 

 


Copyright by Zvircom © 2009