ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Розробка файлової оболонки
         

     

    Інформатика, програмування
    Розробка файлової оболонки

    Постановка завдання.

    Завдання полягає в розробці файлової оболонки для операційної системи Windows'95/98. У програмі реалізувати механізми копіювання, перенесення, видалення, перейменування файлів і директорій, пошук файлів за маскою, щоб переглянути список файлів за маскою, перегляд і редагування файлів у зовнішніх редакторах, присвоєння і отримання атрибутів файлу, привласнення атрибутів групи файлів, запуск програм з рядком параметрів , створення директорії, визначення розміру директорії, отримання інформації про диск, налаштування інтерфейсу програми, визначення сумарного обсягу дискового простору, що займає групою файлів, відновлення інтерфейсних параметрів при повторному запуску програми. Так само забезпечити управління оболонкою за допомогою маніпулятора типу "миша" і клавіатури.

    Метод реалізації.

    Для реалізації поставленої задачі необхідно створити інтерфейс користувача складається з таких компонентів:

    А) список директорій.

    Б) список файлів

    В) список дисків

    Г) головне меню програми

    Д) панель інструментів.

    Для організації інтерфейсу користувача будуть використані стандартні візуальні компоненти Delphi 3.0. Для реалізації механізму копіювання/вставки необхідно запам'ятати список копійованих файлів/директорій, кожен елемент списку повинен містити інформацію про місце знаходження файлу/директорії і імені файлу/директорії. При копіюванні групи файлів або одного файлу необхідно визначити їх місце положення в ієрархії каталогів, а потім заповнити список, вибираючи всі файли позначені зі списку файлів показаного в інтерфейсній частини програми (списку файлів). При копіюванні директорії необхідно також визначити її положення і провести сканування самій директорії зі збереженням в списку імен файлів що містяться в копійований директорії та структури каталогів. Для вставки директорії в місце копіювання, необхідно відтворити її структуру, а потім скопіювати в неї файли. Для здійснення цього процесу вищезазначений список розбивається на два. У першому списку (назвемо його тимчасовий список директорій) повинна знаходитися структура каталогів, а в другому (тимчасовому списку файлів) розташовані в цих каталогах файли. Два списку необхідні для зменшення часу витраченого на копіювання, тому що при наявності одного списку необхідний аналіз кожного елемента списку на предмет наявності піддиректорій і створення цих піддиректорій в місці копіювання, а в копійований директорії в більшості випадків кількість директорій менше ніж кількість файлів і часу на перевірку знадобитися більше, ніж при використанні двох списків.

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

    Алгоритм заповнення тимчасових списків показаний на малюнку 1 у вигляді блок схеми. Реалізація даного алгоритму буде базуватися на використанні функцій FindFirst і FindNext, ці функції здійснюють перегляд вмісту вказаної директорії і як результат повертають ім'я знайденого елемента, його атрибути, час створення і розмір. При аналізі атрибутів знайденого елемента можна визначити цей елемент директорія або файл, і відповідно до аналізу записати його ім'я і положення у відповідний список. На описаному алгоритмі буде базуватися також механізм видалення директорії.

    Згадані вище функції FindFirst і FindNext будуть також застосовані при реалізації механізму пошуку файлів за маскою.

    Опис програми.

    Програма реалізована на мові паскаль з використанням

    Delphi 3.0 - середовища візуального програмування додатків для Windows'95.

    Детально розглянемо реалізацію деяких механізмів, таких як:

    Пошук файлів;

    Копіювання Директорія;

    Видалення директорій.

    Пошук файлів:

    Пошук файлів в програмі реалізований з використанням маски. У масці можливе використання службового символу, заміни групи невідомих символів в імені файла, або його розширення "*", а також можливий пошук з різницею регістрів символів, і без такого, з зазначенням області пошуку. Так само існують можливості пошуку з накладанням додаткових обмежень, таких як розмір шуканого файлу, а так само часу створення файлу. Детально з реалізацією вище перерахованих механізмів ви можете ознайомитися в додатку 1 на сторінках (29-35). Тут же, ми розглянемо реалізацію основної частини цього механізму.

    Для пошуку файлів за маскою необхідно завдання маски пошуку у вигляді *. сом або autoexec .*, або інші можливі варіанти, і області пошуку. В якості додаткового параметра може бути задана перевірка регістру символів. Блок схема пошуку файлів показано на малюнку 1. При пошуку використовується рекурсивна процедура (текст 1.) У якій послідовно проглядається область пошуку, включаючи підкаталоги, порівнюється ім'я знайденого файл з маскою пошуку, і якщо всі накладені обмеження виконані, знайдений файл заноситься до списку запропонований користувачеві для перегляду. Для організації пошуку в різних областях змінюється лише місце першого дзвінка рекурсивної процедури.

    Текст 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

    // Перевірка розширеного пошуку

    If FindForm.CBAdvSearch.Checked and (F. AttrfaDirectory) then

    begin

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

    // розмір і час створення знайдений файл повинні перебувати в межах заданих

    // користувачем

    if not (((F. Size (F. Size> StrToInt (FindForm.SGreater.Text)))) then Continue;

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

    end;

    // перевірити чи не є знайдений файл директорією

    if F. Attr = faDirectory then

    if (F. Name '.') and (F. Name'..') then

    begin

    // якщо знайдений файл - директорія, рекурсивний виклик пошуку в даній директорії

    FindInCurrentDir (CurDir + F. Name +'');

    end;

    if (F. Name'..') 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). Для копіювання/видалення директорій складаються обидва згаданих вище списку. При вставці директорії створюється повне дерево директорії, а потім відбувається копіювання файлів. Під час видалення директорії так само складаються обидва списки, але так як стандартної процедури видаляють не порожню директорію немає, то на початку видаляються всі файли в видаляється директорії (включаючи файли що знаходяться в підтеках), а потім порожні директорії.

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

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

    Висновки.

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

    У програмі реалізовані наступні механізми:

    копіювання, перенесення, видалення, перейменування файлів і директорій,

    пошук файлів за маскою,

    накладення фільтру на список файлів,

    перегляд і редагування файлів у зовнішніх редакторах,

    привласнення і отримання атрибутів файлу,

    привласнення атрибутів групи файлів,

    запуск додатків з рядком параметрів,

    створення директорії,

    визначення розміру директорії,

    отримання інформації про диск,

    налаштування інтерфейсу програми,

    визначення сумарного обсягу дискового простору, що займає групою файлів,

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

    Програма має зручний інтерфейс і може використовуватися для роботи користувачами з різним рівнем знань.

    Системні вимоги: Операційна система Windows'95 і вище, 500 кілобайт дискового простору.

    Головна форма програми

    Модуль описує головну форму

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

    interface

    // компоненти Plug-in (стандартні)

    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: TMenuItem;

    Delete: TMenuItem;

    NewDir: TMenuItem;

    CopyDir: TMenuItem;

    RenameDir: TMenuItem;

    DeleteDir: TMenuItem;

    PasteDir: TMenuItem;

    TempDelete: TListBox;

    TempCopyMove: TListBox;

    Open: TMenuItem;

    View: TMenuItem;

    FileMask1: TMenuItem;

    CMDirList: TListBox;

    DFileList: TListBox;

    Find1: TMenuItem;

    Info1: TMenuItem;

    CMFileList: TListBox;

    FileAttr: TMenuItem;

    SizeDirectory1: TMenuItem;

    CutDir: TMenuItem;

    ToolBar1: TToolBar;

    DrBox: TDriveComboBox;

    Bevel1: TBevel;

    Bevel2: TBevel;

    SpeedButton1: TSpeedButton;

    SCut: TSpeedButton;

    Bevel3: TBevel;

    SCopy: TSpeedButton;

    SPaste: TSpeedButton;

    SDel: TSpeedButton;

    Up: TSpeedButton;

    Bevel4: TBevel;

    Cut1: TMenuItem;

    Copy1: TMenuItem;

    Paste1: TMenuItem;

    Rename: TMenuItem;

    Delete1: TMenuItem;

    Selectall: TMenuItem;

    InvertSelect: TMenuItem;

    procedure About1Click (Sender: TObject);

    procedure Exit1Click (Sender: TObject);

    procedure FormCreate (Sender: TObject);

    procedure Options1Click (Sender: TObject);

    procedure DrivesSectionClick (HeaderControl: THeaderControl;

    Section: THeaderSection);

    procedure DrivesMouseUp (Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    procedure NewDirClick (Sender: TObject);

    procedure DirectoryChange (Sender: TObject);

    procedure CopyClick (Sender: TObject);

    procedure CutClick (Sender: TObject);

    procedure PasteClick (Sender: TObject);

    procedure Rename1Click (Sender: TObject);

    procedure DeleteDirClick (Sender: TObject);

    procedure DeleteClick (Sender: TObject);

    procedure FileMenuPopup (Sender: TObject);

    procedure FileMask1Click (Sender: TObject);

    procedure FileListDblClick (Sender: TObject);

    procedure SplitterMoved (Sender: TObject);

    procedure Find1Click (Sender: TObject);

    procedure Info1Click (Sender: TObject);

    procedure CopyDirClick (Sender: TObject);

    procedure RenameDirClick (Sender: TObject);

    procedure FileAttrClick (Sender: TObject);

    procedure ViewClick (Sender: TObject);

    procedure SizeDirectory1Click (Sender: TObject);

    procedure FileListMouseUp (Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    procedure FileListKeyPress (Sender: TObject; var Key: Char);

    procedure FileListKeyDown (Sender: TObject; var Key: Word;

    Shift: TShiftState);

    procedure PasteDirClick (Sender: TObject);

    procedure DirectoryMenuPopup (Sender: TObject);

    procedure File1Click (Sender: TObject);

    procedure OpenClick (Sender: TObject);

    procedure DrBoxChange (Sender: TObject);

    procedure UpClick (Sender: TObject);

    procedure SCutClick (Sender: TObject);

    procedure SPasteClick (Sender: TObject);

    procedure SDelClick (Sender: TObject);

    procedure SCopyClick (Sender: TObject);

    procedure FileListClick (Sender: TObject);

    procedure CutDirClick (Sender: TObject);

    procedure Cut1Click (Sender: TObject);

    procedure Copy1Click (Sender: TObject);

    procedure Paste1Click (Sender: TObject);

    procedure Delete1Click (Sender: TObject);

    procedure RenameClick (Sender: TObject);

    procedure FormResize (Sender: TObject);

    procedure InvertSelectClick (Sender: TObject);

    procedure FileListKeyUp (Sender: TObject; var Key: Word;

    Shift: TShiftState);

    procedure SelectallClick (Sender: TObject);

    private

    public

    end;

    var

    MainForm: TMainForm;

    Size: integer;

    implementation

    // компоненти Plug-in (не стандартні)

    uses UAboutBox, UMainForm_, UOptionsForm, UCreateDir, UProgressForm,

    URenameForm, UAskDeleteForm, UGetFileMask, FmxUtils, UFindForm, UInfoForm,

    UAttrFilesForm, UNotTrivial, UDeleteDir, URenameDirForm, URunForm,

    UViewForm;

    ($ R *. DFM)

    procedure TMainForm.About1Click (Sender: TObject);

    // вивід форми "ІНФОРМАЦІЯ ПРО ПРОГРАМУ"

    begin

    AboutBox.Show;

    end;

    procedure TMainForm.Exit1Click (Sender: TObject);

    // Обробка виходу з програми

    begin

    If AskExit then

    begin

    // Підтвердження виходу

    If Application.MessageBox ( 'Exit?', 'Exit', MB_APPLMODAL + MB_ICONQuestion + MB_YESNO) = IDYes then

    Begin

    // запис інформації про програму в файл МС.INI

    SaveIniMainForm;

    Close;

    end

    end

    else

    begin

    SaveIniMainForm;

    Close;

    end;

    end;

    procedure TMainForm.FormCreate (Sender: TObject);

    // Установка начльних параметрів для компонент головної форми

    begin

    SetUpMainForm;

    SetUpComponents;

    end;

    procedure TMainForm.Options1Click (Sender: TObject);

    // Висновок форми параметрів

    begin

    // Центрування що виводиться форми щодо головної форми

    GetFormToCenter (OptionsForm);

    OptionsForm.ShowModal;

    end;

    procedure TMainForm.DrivesSectionClick (HeaderControl: THeaderControl;

    Section: THeaderSection);

    // Зміна поточного диска

    begin

    Directory.Drive: = Section.Text [1];

    Directory.SetDirectory (Section.Text [1 ]+':');

    MainForm.Directory.BuildTree;

    end;

    procedure TMainForm.DrivesMouseUp (Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    // перемальовування списку директорій при необхідності

    Directory.Repaint;

    end;

    procedure TMainForm.NewDirClick (Sender: TObject);

    // Створення директорії і висновок відповідної форми

    begin

    CreateDirForm.Show;

    end;

    Function CountDir (Str: String): String;

    // Визначення кількості піддиректорій в поточній директорії

    Var F: TSearchRec;

    C: integer;

    begin

    c: = 0;

    findfirst (Str +'*.*', faAnyFile, F);

    findnext (F);

    repeat

    if (f.Attr> = 16) and (f.attr0) then

    begin

    AskDeleteForm.ShowModal;

    end;

    if MainForm.Directory.Focused then

    begin

    IndexDeleteDirectory: = MainForm.Directory.SelectedItem;

    MainForm.CMDirList.Clear;

    MainForm.CMFileList.Clear;

    DeleteEmptyDirectory (MainForm.Directory.Directory);

    MainForm.Directory.Invalidate;

    end;

    end;

    procedure TMainForm.SCopyClick (Sender: TObject);

    // На панелі натиснута кнопка Копіювати

    begin

    If MainForm.Directory.Focused then

    begin

    SourseDir: = MainForm.Directory.Directory;

    DoingWithDir: = True;

    CopyMoveDirectory;

    end;

    If MainForm.FileList.Focused then

    begin

    FlagCopyFile: = True;

    FlagMoveFile: = False;

    CopyPathFileInTemp;

    end;

    end;

    procedure TMainForm.FileListClick (Sender: TObject);

    begin

    MainForm.SDel.Enabled: = True;

    MainForm.SCopy.Enabled: = True;

    MainForm.SCut.Enabled: = True;

    end;

    procedure TMainForm.CutDirClick (Sender: TObject);

    // Вирізати Директорії

    begin

    SourseDir: = MainForm.Directory.Directory;

    DoingWithDir: = False;

    MainForm.CMDirList.Items.Add (MainForm.Directory.Directory);

    GreateCopyMoveDirList (MainForm.Directory.Directory);

    end;

    procedure TMainForm.Cut1Click (Sender: TObject);

    // Вирізати в залежності від контексту

    begin

    if MainForm.FileList.Focused then

    begin

    FlagMoveFile: = True;

    CopyPathFileInTemp;

    end;

    If MainForm.Directory.Focused then

    begin

    SourseDir: = MainForm.Directory.Directory;

    DoingWithDir: = False;

    MainForm.CMDirList.Items.Add (MainForm.Directory.Directory);

    GreateCopyMoveDirList (MainForm.Directory.Directory);

    end;

    end;

    procedure TMainForm.Copy1Click (Sender: TObject);

    // Копіювання в залежності від контексту

    begin

    If MainForm.Directory.Focused then

    begin

    SourseDir: = MainForm.Directory.Directory;

    DoingWithDir: = True;

    CopyMoveDirectory;

    end;

    If MainForm.FileList.Focused then

    begin

    FlagCopyFile: = True;

    FlagMoveFile: = False;

    CopyPathFileInTemp;

    end;

    end;

    procedure TMainForm.Paste1Click (Sender: TObject);

    // Вставка в залежності від контексту

    begin

    if MainForm.TempCopyMove.Items.Count0 then

    begin

    ProgressForm.Show;

    PasteFileFromTemp;

    ProgressForm.Close;

    end;

    If MainForm.CMDIrList.Items.Count0 then

    begin

    DestinationDir: = MainForm.Directory.Directory;

    PasteDirectory (SourseDir, MainForm.Directory.Directory);

    MainForm.Directory.BuildTree;

    If not DoingWithDir then

    begin

    DelNotEmptyDirectory (SourseDir);

    MainForm.Directory.BuildTree;

    end;

    MainForm.CMDirList.Clear;

    end;

    end;

    procedure TMainForm.Delete1Click (Sender: TObject);

    // Видалення залежно від контексту

    begin

    if (MainForm.FileList.Focused) and (MainForm.FileList.SelCount> 0) then

    begin

    AskDeleteForm.Show;

    end;

    if MainForm.Directory.Focused then

    begin

    IndexDeleteDirectory: = MainForm.Directory.SelectedItem;

    MainForm.CMDirList.Clear;

    MainForm.CMFileList.Clear;

    DeleteEmptyDirectory (MainForm.Directory.Directory);

    MainForm.Directory.Invalidate;

    end;

    end;

    procedure TMainForm.RenameClick (Sender: TObject);

    // Перейменування в залежності від контексту

    begin

    If MainForm.Directory.Focused then

    begin

    GetFormToCenter (RenameDirForm);

    RenameDirForm.ShowModal;

    end;

    if MainForm.FileList.Focused then

    begin

    RenameFileForm.ShowModal;

    end;

    end;

    procedure TMainForm.FormResize (Sender: TObject);

    // Накладення обмежень на мінімальні розміри головної форми

    begin

    if MainForm.Width 0 then (if we read anything ... )

    FileWrite (Dest, CopyBuffer ^, BytesCopied); (... write chunk)

    () ProgressForm.ProgresCopy.Repaint;

    () ProgressForm.AllProgresCopy.Repaint;

    until BytesCopied () AllReadByteFile: = AllReadByteFile + GetFileSize (FileName);

    () ProgressForm.Ready.Caption: = FormatSize (FloatToStr (AllReadByteFile));

    () ProgressForm.AllProgresCopy.Progress: = FloatToInt (((100 * (AllReadByteFile)/(SizeAllCopy 1 ))));

    () ProgressForm.ProgresCopy.Progress: = 100;

    finally

    FileClose (Dest); (close the destination file)

    end;

    finally

    FileClose (Source); (close the source file)

    end;

    finally

    FreeMem (CopyBuffer, ChunkSize); (free the buffer)

    end;

    end;

    (MoveFile procedure)

    (

    Moves the file passed in FileName to the directory specified in DestDir.

    Tries to just rename the file. If that fails, try to copy the file and

    delete the original.

    Raises an exception if the source file is read-only, and therefore cannot

    be deleted/moved.

    )

    procedure MoveFile (const FileName, DestName: string);

    var

    Destination: string;

    begin

    Destination: = ExpandFileName (DestName); (expand the destination path)

    if not RenameFile (FileName, Destination) then (try just renaming)

    begin

    CopyFile (FileName, Destination); (copy it over to destination ...)

    DelOneFile (FileName, All);

    end;

    end;

    (GetFileSize function)

    (

    Returns the size of the named file without opening the file. If the file

    doesn't exist, returns -1.

    )

    function GetFileSize (const FileName: string): LongInt;

    var

    SearchRec: TSearchRec;

    begin

    if FindFirst (ExpandFileName (FileName), faAnyFile, SearchRec) = 0 then

    Result: = SearchRec.Size

    else Result: = -1;

    end;

    function FileDateTime (const FileName: string): System.TDateTime;

    begin

    Result: = FileDateToDateTime (FileAge (FileName));

    end;

    function HasAttr (const FileName: string; Attr: Word): Boolean;

    begin

    Result: = (FileGetAttr (FileName) and Attr) = Attr;

    end;

    function ExecuteFile (const FileName, Params, DefaultDir: string;

    ShowCmd: Integer): THandle;

    var

    zFileName, zParams, zDir: array [0 .. 79] of Char;

    begin

    Result: = ShellExecute (Application.MainForm.Handle, nil,

    StrPCopy (zFileName, FileName), StrPCopy (zParams, Params),

    StrPCopy (zDir, DefaultDir), ShowCmd);

    end;

    end.

    Короткий посібник користувача.

    Програма призначена для керування файловою системою операційної системи Windows'95/'98, у програмі передбачені такі можливості:

    Копіювання, перейменування, перенесення, видалення файлів і директорій;

    Визначення та встановлення атрибутів файлів;

    Розширений пошук файлів за маскою;

    Запуск програм з рядком параметрів;

    Застосування маски-фільтра під час перегляду списку файлів;

    Створення директорій;

    Визначення розміру директорії;

    Визначення сумарного обсягу дискового простору, що займає групою файлів;

    Отримання інформації про поточний диск;

    Запуск зовнішніх програм редакторів для перегляду і редагування файлів;

    Установка інтерфейсних параметрів програми.

    Огляд інтерфейсу програми МС.

    Інтерфейс програми на чотири функціональні частини

    Головне меню програми;

    Панель інструментів;

    Список файлів;

    Список директорій;

    Головне меню програми містить із собі три компоненти управління програмою:

    File

    View

    Options

    Компонента File містить у собі основні функції управління файлами і директоріями (див. рис. 1). Функція запуску програм Run доступна тільки тоді, коли виділений файл є виконуваною програмою. При виборі даного пункту. З'являється форма, що містить рядок параметрів, а також параметр запуску - вигляд форми вікна запуску (див. рис. 2).

    Рис 1. Меню File.

    Рис 2. Форма запуску файлів з рядком параметрів.

    Опції Cut, Copy, Paste, Delete (Вирізати, Копіювати, Вставити, Видалити) - стандартні функції управління файлами/директоріями. При неможливості виконання вище перелічених дій, ці функції недоступні. Функція Rename (Перейменувати) запрошує у користувача нове ім'я для файлу/директорії у формі наведеної на малюнку 3.

    Рис 3. Перейменування файлів/директорій

    Функція Delete (Видалення), видаляє виділені елементи в залежності від активної робочої області. Якщо останнє, перед викликом цієї функції, виділення проводилося в області файлів, то будуть вилучені виділені файли, якщо ж активна область директорій то буде видалена директорія.

    Функція Find (Знайти) забезпечує розширений пошук файлів за маскою в галузі пошуку вказаної користувачем. Параметри і маска пошуку задається у формі наведеної на малюнку 4

    Рис 4. Пошук файлів.

    Параметрами пошуку є завдання галузі пошуку, можливі три області: поточна директорія, поточний диск і всі жорсткі диски (включаючи підключені мережеві диски). Також є можливість пошуку за вказівкою обмежень у даті створення файлу створення і його передбачуваних розмірах. Під час пошуку в рядку статусу форми відображається кількість знайдених файлів, директорія в якій здійснюється пошук. Після того як були знайдені файли, можливе повернення в головну форму програми і перехід до місця положення вибраний файл, а також запуск цікавить файлу (редагування в зовнішньому редакторі, якщо обраний файл не є додатком). Для зручності завдання маски пошуку передбачено зберігання 10-ти останніх масок що відкривається в списку.

    Функція Exit (Вихід) виробляє вихід з програми.

    Всім вище описаним функцій зіставлені гарячі клавіші.

    Компонента View містить в собі функції фільтра, отримання інформації про диск, отримання та встановлення атрибутів файлу, отримання розміру поточної директорії, виділення всіх файлів, що знаходяться у поточній директорії і інверсне виділення файлів.

    Функція File Mask (Маска фільтру) запрошує у користувача у формі Get File Mask маску для відображення файлів. Для скасування маски необхідний повторний виклик функції і завдання маски пропонованої за замовчуванням.

    Функція Info (Інформація) надає користувачеві інформацію про поточний диск (обсяг вільного і зайнятого простору), а також інформацію про поточну директорії.

    Функція File Attributes (Атрибути файлу) дає можливість перегляду поточних атрибутів файлу та зміни цих атрибутів. У випадку декількох файлів можливо групове присвоєння нових атрибутів.

    Функція Size Directory (Розмір директорії) виводить в статус рядку списку директорій розмір поточної директорії.

    Функція Select All виділяє всі файли, що знаходяться в цій директорії.

    Функція Invert Select інвертує виділення файлів. З файлів які були виділені, виділення знімається, а решту файлів виділяються.

    Компонента Options (Параметри) виводить на екран форму параметрів програми см рис 5, в якій користувач

    Рис 5. Параметри програми

    може встановити параметри інтерфейсу програми.

    Параметри - наявність статус рядки, кількість колонок у списку файлів (від 1 до 3), запитувати підтвердження при виході з програми. Так само існує механізм встановлення значення параметрів за замовчуванням (Запитувати підтвердження при виході, Наявність статус рядки, 1 колонка в списку файлів).

    Панель інструментів містить в собі деякі з функцій розташованих у головному меню, а також кнопка переходу на один рівень вгору в списку директорій і список дисків (включаючи мережеві диски підключені операційною системою до запуску програми). Зовнішній вигляд панелі інструментів показаний на малюнку 6.

    Рис 6 Панель інструментів.

    Список файлів, призначений для перегляду списку файлів розташованих у поточній директорії. При натисканні правої кнопки миші викликається контекстне меню, в якому є функції копіювання, видалення, перейменування, вставки. Також у списку файлів існує статус-рядок в якій виводиться інформація про зазначеному файлі (ім'я, розмір, дату та час створення). У випадку групи зазначених файлів статус-рядок показує якою сумарний обсяг байт займають позначені файли на диску.

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

    Використання функцій:

    Як згадувалося вище програма має набір функцій роботи з файлами. Деякі вимагають певної последоваьтельності дій будуть розглянуті в цьому розділі.

    Копіювання/Передача.

    Для копіювання файлів/директорії (надалі будемо говорити тільки про файли, тому що процеси ідентичні) необхідно виконати наступну послідовність дій:

    Виділити файли які потрібно скопіювати

    Існують кілька способів виділення групи файлів, (ті хто добре знайомий в операційною системою Windows'95 цей розділ, як і всі наступні можуть пропустити) виділення мишкою із застосуванням клавіш Ctrl і Shift, клавіша Ctrl призначена для виділення до групи файлів, що окремо стоять у списку, а клавіша Shift призначена для виділення "від початкового файлу, до кінцевого".

    Виконати функцію копіювати за допомогою вибору її з будь-якого вище описаного місця інтерфейсу

    Вибрати місце призначення копіювання і виконати функцію вставити.

    Далі на екрані буде відображено процес копіювання у формі Progress ...

    Видалення.

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

    Перейменування.

    При перейменування на екран виводиться форма, що пропонує ввести нове ім'я для файлу.

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status