Разработка файловой оболочки

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

? просмотра. Для организации поиска в разных областях изменяется лишь место первого вызова рекурсивной процедуры.

 

Текст 1.

Procedure TFindForm.FindInCurrentDir(CurDir:string);

Var

SizeF:integer;

i:integer;

EndList:boolean;

F:TSearchRec;

D:string;

begin

{Вывод в статус строке директории в которой производится поиск}

FindForm.StatusFind.Panels[1].Text:=CurDir;

FindFirst(CurDir+*.*,faAnyFile,F);

FindNext(F);

repeat

// Проверка расширенного поиска

faDirectory)then"> If FindForm.CBAdvSearch.Checked and (F.Attr<>faDirectory) then

begin

// Проверка на размер найденного файла

// размер и время создания найденого файла должны находится в пределах заданных

// пользователем

if not(((F.Size < StrToInt(FindForm.SLess.Text)) and

StrToInt(FindForm.SGreater.Text))))thenContinue;"> (F.Size > StrToInt(FindForm.SGreater.Text)))) then Continue;

FindForm.DateIsAfter.Date)))thenContinue;"> if not(((FileDateTime(CurDir+F.Name) FindForm.DateIsAfter.Date))) then Continue;

end;

// проверить не является ли найденый файл директорией

if F.Attr=faDirectory then

.)and(F.Name..) then

begin

// если найденный файл директория , рекурсивный вызов поиска в данной директории

FindInCurrentDir(CurDir+F.Name+\);

end;

..)and(F.Name.) then

// если файл подходит под маску, занести его в список

if CompareFileWithMask(F.Name) then

begin

FindForm.FileWasFind.Items.Add(CurDir+F.Name);

FindForm.StatusFind.Panels[0].Text:=IntToStr(StrToInt(FindForm.StatusFind.Panels[0].Text)+1);

FindForm.FileWasFind.Refresh;

end;

// выполнять поиск пока не закончатся файлы в текущей области заданной области.

Until((FindNext(F) <> 0));

FindClose(F);

end;

 

В форме поиска файлов возможен переход к выбранному файлу, из списка найденных, а также запуск либо просмотр/редактирование во внешнем редакторе.

 

Копирование / Удаление директорий:

Описанная выше реализация алгоритма поиска файлов применёна в реализации копирования и удаления директорий. При реализации рассматриваемых процессов понадобится наличие двух временных списков: списка директорий и списка файлов (каждая строка обоих списков включает в себя полный путь (FULL PATH)) файла/директории. Для реализации временных списков использован визуальная компонента ListBoх, данная компонента представляет собой динамический список строк и набор процедур и функций для управления этим списком. Заполнение этих списков осуществляется при помощи просмотра директории. С листингом программы реализующем эти процессы вы можете ознакомиться в приложении 1 на страницах (17,23-27). Для копирования/удаления директорий составляются оба вышеупомянутых списка. При вставке директории создаётся полное дерево директории, а затем происходит копирование файлов. При удалении директории так же составляются оба списка, но так как стандартной процедуры удаляющей не пустую директорию нет, то в начале удаляются все файлы в удаляемой директории (включая файлы находящиеся в поддиректориях), а затем пустые директории.

 

Анализ результатов.

Программа имеет все необходимые функции работы с файлами. Все функции можно активизировать нажатием комбинации клавиш. Производиться статистика копирования, переноса, удаления файлов/директорий в удобной для восприятия пользователем форме. Существует простой механизм наложения фильтра на показываемые файлы. При изменении интерфейса программы, все изменения сохраняются и будут восстановлены при следующем запуске. Запуск приложений со строкой параметров с указанием типа запуска. Вывод сообщения о количестве поддиректорий в директории и о количестве файлов расположенных в ней. Определение размера директории присвоение атрибутов группе файлов простым нажатием двух клавиш.

 

Выводы.

В ходе работы была разработана программа манипулирования файлами и директориями.

В программе реализованы следующие механизмы:

  • копирования, переноса, удаления, переименования файлов и директорий,
  • поиск файлов по маске,
  • наложение фильтра на список файлов,
  • просмотр и редактирование файлов во внешних редакторах,
  • присвоение и получение атрибутов файла,
  • присвоение атрибутов группе файлов,
  • запуск приложений со строкой параметров,
  • создание директории,
  • определение размера директории,
  • получение информации о диске,
  • настройки интерфейса программы,
  • определение суммарного объёма дискового пространства занимаемого группой файлов,
  • восстановление интерфейсных параметров при повторном запуске программы.

Программа имеет удобный интерфейс и может использоваться для работы пользователями с разным уровнем знаний.

Системные требования: Операционная система Windows95 и выше, 500 килобайт дискового пространства.

 

Главная форма программы

 

Модуль описывающий главную форму

 

unit UMainForm; // главная форма программы

 

interface

// подключаемые модули (стандартные)

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ExtCtrls, ComCtrls, StdCtrls, FileCtrl, Grids, Outline, DirOutln,

ToolWin, Buttons;

 

type

TMainForm = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

About1: TMenuItem;

N1: TMenuItem;

Exit1: TMenuItem;

Options1: TMenuItem;

Directory: TDirectoryOutline;

FileList: TFileListBox;

Drv: TDriveComboBox;

StatusBar: TStatusBar;

DirectoryMenu: TPopupMenu;

FileMenu: TPopupMenu;

Splitter: TSplitter;

Cut: TMenuItem;

Copy: TMenuItem;

Paste: TMenuItem;

Rename1