Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам

Автор работы: Пользователь скрыл имя, 21 Ноября 2011 в 09:41, дипломная работа

Описание работы

Целью дипломной работы является упростить работу с файлами и каталогами, а также операции над ними. Другими словами, необходимо создать файловый менеджер с поддержкой обзора каталогов, перемещения по ним, копирования, удаления, переименования файлов и каталогов, запуск, правка, поиск файлов по маске и пути, а также mp3-файлов по ID3-параметрам.
Актуальность исследования определяется тем, что сейчас, когда компьютер стал незаменимым атрибутом современной жизни, появилась необходимость в инструменте для работы с файловой структурой, в том числе mp3-файлами.

Содержание работы

ВВЕДЕНИЕ
1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ И ПОСТАНОВКА ЗАДАЧИ
1.1 Анализ предметной области
1.2 Анализ аналогов и прототипов
1.3 Перечень задач, подлежащих решению в процессе разработки
1.4 Входная, постоянная, выходная информации
2 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Выбор и обоснование средств и методов решения для реализации проекта
2.2 Функциональные назначения программного обеспечения
3 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ
4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ
4.1 Правовые аспекты использования программного обеспечения
4.2 Расчет себестоимости разработанного программного продукта
4.2.1 Общие сведения
4.2.2 Расчет себестоимости программного продукта
5 ОХРАНА ТРУДА
5.1 Охрана жизнедеятельности на производстве
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А Техническое задание
ПРИЛОЖЕНИЕ Б Описание программы
ПРИЛОЖЕНИЕ В Программа и методика испытания
ПРИЛОЖЕНИЕ Г Руководство оператора
ПРИЛОЖЕНИЕ Г Руководство программиста
ПРИЛОЖЕНИЕ Д Содержание электронного носителя
ПРИЛОЖЕНИЕ Л Листинг программных модулей

Файлы: 20 файлов

0. Титульник(г).docx

— 14.89 Кб (Просмотреть файл, Скачать файл)

1. Содержание.docx

— 37.02 Кб (Просмотреть файл, Скачать файл)

2. Введение(г).docx

— 19.66 Кб (Просмотреть файл, Скачать файл)

3. Глава 1. Анализ предметной области(г).docx

— 40.31 Кб (Просмотреть файл, Скачать файл)

4. Глава 2. Проектирование программного обеспечения.docx

— 50.35 Кб (Просмотреть файл, Скачать файл)

5. Глава 3. Реализация и тестирование(г).docx

— 27.09 Кб (Просмотреть файл, Скачать файл)

6. Глава 4. Экономическая часть(г).docx

— 51.33 Кб (Просмотреть файл, Скачать файл)

7. Глава 5. Охрана труда(г).docx

— 53.86 Кб (Просмотреть файл, Скачать файл)

8. Заключение(г).docx

— 25.06 Кб (Просмотреть файл, Скачать файл)

9. Список используемых источников (г).docx

— 16.99 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Ж - листинг.docx

— 83.75 Кб (Скачать файл)

// Получение списка  строк (список файлов)

Procedure TfrFilePanel.GetItemByList(ListItem:TListItem; Var Item:TFileRecord);

Var

i:Integer;

Begin

i:=lvFiles.Items.IndexOf(ListItem);

  If Not(NowRoot) Then Dec(i);

  If i<0 Then

    Item:=DirUpItem

  Else

AllFiles.GetItem(i, Item);

End;

// Показ информации о файлах

Procedure TfrFilePanel.ShowInfo;

Var

  TotalBytes, TotalFree:Int64;

  TotalDirs, TotalFiles, CheckedDirs, CheckedFiles:Integer;

  TotalSize, CheckedSize:Int64;

  TmpStr:String;

Begin

GetDiskSize(CurrentDrive, TotalBytes, TotalFree);

  lbCurrentPath.Caption:=CurrentFullPath;

  lbCurrentPath.Hint:=CurrentFullPath;

  TmpStr:=GetCompactSize(TotalFree)+' из '+GetCompactSize(TotalBytes)+' свободно';

  lbDriveInfo.Caption:=TmpStr;

  lbDriveInfo.Hint:=TmpStr;

AllFiles.GetInfo(TotalDirs, TotalFiles, CheckedDirs, CheckedFiles, TotalSize, CheckedSize);

  TmpStr:=' '+GetCompactSize(CheckedSize)+' / '+GetCompactSize(TotalSize)+' в '+

GetFormattedSize(CheckedFiles, 1, True)+' / '+GetFormattedSize(TotalFiles, 1, True)+' файле(ах) и '+

GetFormattedSize(CheckedDirs, 1, True)+' / '+GetFormattedSize(TotalDirs, 1, True)+' папке(ах)';

  pnFilesInfo.Caption:=TmpStr;

  pnFilesInfo.Hint:=TmpStr;

End;

// Задаем размеры столбцов

Procedure TfrFilePanel.SetColumnsSize(ColumnsSize:TColumnsSize);

Var

i:Integer;

Begin

  For i:=0 To lvFiles.Columns.Count-1 Do

    lvFiles.Columns.Items[i].Width:=ColumnsSize[i];

End;

// Получаем размеры столбцов

Procedure TfrFilePanel.GetColumnsSize(Var ColumnsSize:TColumnsSize);

Var

i:Integer;

Begin

  For i:=0 To lvFiles.Columns.Count-1 Do

    ColumnsSize[i]:=lvFiles.Columns.Items[i].Width;

End;

// Выбор диска

procedure TfrFilePanel.dcbxDriveChange(Sender: TObject);

begin

  If Not(Inited) Then Exit;

SetDrive(dcbxDrive.Drive);

  Refresh;

  Activate;

end;

// Отслеживаем нажитие клавиш

procedure TfrFilePanel.lvFilesKeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

Var

  TmpStr:String;

  TmpBool:Boolean;

begin

  Case Key Of

    VK_Space:Begin

ChangeCheck(lvFiles.ItemFocused);

      End;

    VK_Insert:Begin

ChangeCheck(lvFiles.ItemFocused);

      End;

    VK_Return:Begin

lvFilesDblClick(Self);

      End;

    VK_Left:Begin

        lvFiles.ItemFocused:=lvFiles.Items.Item[0];

        lvFiles.Selected:=lvFiles.Items.Item[0];

      End;

    VK_Right:Begin

        lvFiles.ItemFocused:=lvFiles.Items.Item[lvFiles.Items.Count-1];

        lvFiles.Selected:=lvFiles.Items.Item[lvFiles.Items.Count-1];

      End;

    VK_Back:Begin

        If ssCtrl In Shift Then

btDirRootClick(Self)

        Else

btDirUpClick(Self);

      End;

    VK_Delete:Begin

       // FullRemoveDir(s2,True,True,True);

      End;

    VK_F8:Begin

        //TryDelete;

      End;

    VK_F2:Begin

lvFilesEditing(Self, lvFiles.ItemFocused, TmpBool);

      End;

    VK_F3:Begin

        EditFile;

      End;

    VK_F4:Begin

        If ssShift In Shift Then

        Begin

          TmpStr:=ConstLastRequest;

          If Not(GetNameQuery('Редактироватьфайл:', TmpStr)) Then Exit;

ExecuteOneFile(CurrentFullPath, ConstNotepadFile, TmpStr);

          Exit;

        End;

        EditFile;

      End;

    VK_F5:Begin

        //TryCopyFile(p1,p2);

      End;

    VK_F6:Begin

        TryMoveFile;

      End;

    VK_F7:Begin

        CreateFolder;

      End;

  End;

end;

Function TfrFilePanel.ChangeCheck(ListItem:TListItem):Boolean;

Var

  Item:TFileRecord;

  ID:Integer;

Begin

  Result:=False;

GetItemByList(ListItem, Item);

  If Item.Name=ConstDirUp Then Exit;

  ID:=Item.ID;

AllFiles.Items[ID].Checked:=Not(AllFiles.Items[ID].Checked);

  If AllFiles.Items[ID].Checked Then ListItem.StateIndex:=ConstCheckedImageIndex Else ListItem.StateIndex:=ConstUnCheckedImageIndex;

  Result:=AllFiles.Items[ID].Checked;

  ShowInfo;

End;

Procedure TfrFilePanel.SelectLastItem;

Var

  ListItem:TListItem;

  StartIndex:Integer;

Begin

  StartIndex:=0;

  Repeat

    ListItem:=lvFiles.FindCaption(StartIndex, LastCaption, False, False, False);

    If ListItem=nil Then

    Begin

      lvFiles.ItemFocused:=lvFiles.Items.Item[0];

      lvFiles.Selected:=lvFiles.Items.Item[0];

      LastCaption:='';

      LastExt:='';

      Exit;

    End;

    If ListItem.SubItems[0]=LastExt Then

    Begin

      lvFiles.ItemFocused:=ListItem;

      lvFiles.Selected:=ListItem;

      LastCaption:='';

      LastExt:='';

      Exit;

    End;

    StartIndex:=ListItem.Index;

  Until False;

End;

//Переименование

Function TfrFilePanel.TryRename(ListItem:TListItem; NewName:String):Boolean;

Var

  Item:TFileRecord;

  OldName, Name, Ext:String;

  Tmp:Integer;

  TmpStr:String;

Begin

  Result:=False;

  Name:=ExtractFileName(NewName);

  Ext:=ExtractFileExt(NewName);

  If Ext<>'' Then

  Begin

Delete(Name, Length(Name)-Length(Ext)+1, Length(Ext));

Delete(Ext, 1, 1);

  End;

  If Name='' Then Exit;

GetItemByList(ListItem, Item);

  OldName:=CurrentFullPath+GetFullName(Item);

  Tmp:=RenameOneFile(OldName, NewName);

  If Tmp<0 Then

  Begin

    TmpStr:=GetFileError(Tmp)+#0;

Application.MessageBox(@TmpStr[1], 'Ошибка!', MB_ICONERROR Or MB_OK);

    Exit;

  End;

  If IsDirectory(Item) Then

    LastCaption:=ConstDirLeftBracket+Name+ConstDirRightBracket

  Else

    LastCaption:=Name;

  LastExt:=Ext;

  Result:=True;

End;

Procedure TfrFilePanel.TryMoveFile;

Var

  Item:TFileRecord;

  NewName:String;

Begin

GetItemByList(lvFiles.ItemFocused, Item);

  If Item.Name=DirUpItem.Name Then Exit;

  NewName:=UseCopyToDir+GetFullName(Item);

  If GetNameQuery('Переместить "'+GetFullName(Item)+'" в:', NewName) Then

  Begin

    If TryRename(lvFiles.ItemFocused, NewName) Then Refresh;

  End;

End;

//Правка

Procedure TfrFilePanel.EditFile;

Var

  ListItem:TListItem;

  Item:TFileRecord;

Begin

  ListItem:=lvFiles.ItemFocused;

GetItemByList(ListItem, Item);

  If IsDirectory(Item) Then Exit;

ExecuteOneFile(CurrentFullPath, ConstNotepadFile, GetFullName(Item));

End;

//Создать каталог

Procedure TfrFilePanel.CreateFolder;

Var

  FolderName:String;

  Tmp:Integer;

  TmpStr:String;

Begin

  FolderName:=ConstLastRequest;

  If Not(GetNameQuery('Создатькаталог:', FolderName)) Then Exit;

  If FolderName='' Then Exit;

  Tmp:=CreateOneFolder(CurrentFullPath+FolderName);

  If Tmp=F_ER_SUCCESS  Then

  Begin

    LastCaption:=ConstDirLeftBracket+FolderName+ConstDirRightBracket;

    LastExt:='';

    Refresh;

    Exit;

  End;

  TmpStr:=GetFileError(Tmp)+#0;

Application.MessageBox(@TmpStr[1], 'Ошибка!', MB_ICONERROR Or MB_OK);

End; 

Procedure TfrFilePanel.SetDrive(Drive:Char);

Var

  Dir:String;

Begin

  Repeat

    Drive:=UpCase(Drive);

   {$I-}

GetDir(Ord(Drive)-64, Dir);

    If Drive=Dir[1] Then

ChDir(Dir)

    Else Begin

      Dir:=Drive+':\';

ChDir(Dir);

    End;

    If IOResult<>0 Then

    Begin

      Dir:=Drive+':\';

ChDir(Dir);

    End;

   {$I+}

    If IOResult=0 Then

    Begin

      dcbxDrive.Drive:=Drive;

      CurrentDrive:=Drive;

      CurrentFullPath:=Dir;

      Exit;

    End;

ChooseNewDrive(Drive);

  Until False;

End;

//Получение пути

Procedure TfrFilePanel.CheckCurrentPath;

Var

  Dir:String;

Begin

{$I-}

ChDir(CurrentFullPath);

{$I+}

  If IOResult<>0 Then

  Begin

SetDrive(ExtractFileDrive(CurrentFullPath)[1]);

  End;

  Dir:=CurrentFullPath+#0;

SetCurrentDirectory(@Dir[1]);

End;

//Открытиефайла

procedure TfrFilePanel.lvFilesDblClick(Sender: TObject);

Var

  ListItem:TListItem;

  Item:TFileRecord;

  ErrorCode:Integer;

  ErrorString:String;

begin

  ListItem:=lvFiles.ItemFocused;

  If ListItem=nil Then Exit;

GetItemByList(ListItem, Item);

  If IsDirectory(Item) Then

  Begin

SetPath(CurrentFullPath+Item.Name);

    Exit;

  End;

  ErrorCode:=ExecuteOneFile(CurrentFullPath, GetFullName(Item), '');

  If ErrorCode>32 Then Exit;

  ErrorString:=GetExecuteError(ErrorCode)+#0;

Application.MessageBox(@ErrorString[1], 'Ошибка!', MB_ICONERROR Or MB_OK);

end;

procedure TfrFilePanel.btDirUpClick(Sender: TObject);

ПРИЛОЖЕНИЕ А - техническое задание(г).docx

— 21.43 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Б - описание программы(г).docx

— 37.43 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ В - программа и методика испытаний(г).docx

— 36.94 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Г - руководство оператора.docx

— 558.55 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Д - руководство программиста.docx

— 63.10 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Е - диаграмма вариантов использования(г).docx

— 41.52 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ З - содержание электронного носителя(г).docx

— 16.18 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ И - диаграмма компонентов.docx

— 158.12 Кб (Просмотреть файл, Скачать файл)

РЕФЕРАТ.docx

— 13.87 Кб (Просмотреть файл, Скачать файл)

Информация о работе Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам