Автор работы: Пользователь скрыл имя, 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 Охрана жизнедеятельности на производстве
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А Техническое задание
ПРИЛОЖЕНИЕ Б Описание программы
ПРИЛОЖЕНИЕ В Программа и методика испытания
ПРИЛОЖЕНИЕ Г Руководство оператора
ПРИЛОЖЕНИЕ Г Руководство программиста
ПРИЛОЖЕНИЕ Д Содержание электронного носителя
ПРИЛОЖЕНИЕ Л Листинг программных модулей
// Получение списка строк (список файлов)
Procedure TfrFilePanel.GetItemByList(
Var
i:Integer;
Begin
i:=lvFiles.Items.IndexOf(
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:=
lbCurrentPath.Hint:=
TmpStr:=GetCompactSize(
lbDriveInfo.Caption:=TmpStr;
lbDriveInfo.Hint:=TmpStr;
AllFiles.GetInfo(TotalDirs, TotalFiles, CheckedDirs, CheckedFiles, TotalSize, CheckedSize);
TmpStr:=' '+GetCompactSize(CheckedSize)+
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(
Var
i:Integer;
Begin
For i:=0 To lvFiles.Columns.Count-1 Do
lvFiles.Columns.Items[i].
End;
// Получаем размеры столбцов
Procedure TfrFilePanel.GetColumnsSize(
Var
i:Integer;
Begin
For i:=0 To lvFiles.Columns.Count-1 Do
ColumnsSize[i]:=lvFiles.
End;
// Выбор диска
procedure TfrFilePanel.dcbxDriveChange(
begin
If Not(Inited) Then Exit;
SetDrive(dcbxDrive.Drive);
Refresh;
Activate;
end;
// Отслеживаем нажитие клавиш
procedure TfrFilePanel.lvFilesKeyDown(
Shift: TShiftState);
Var
TmpStr:String;
TmpBool:Boolean;
begin
Case Key Of
VK_Space:Begin
ChangeCheck(lvFiles.
End;
VK_Insert:Begin
ChangeCheck(lvFiles.
End;
VK_Return:Begin
lvFilesDblClick(Self);
End;
VK_Left:Begin
lvFiles.ItemFocused:=lvFiles.
lvFiles.Selected:=lvFiles.
End;
VK_Right:Begin
lvFiles.ItemFocused:=lvFiles.
lvFiles.Selected:=lvFiles.
End;
VK_Back:Begin
If ssCtrl In Shift Then
btDirRootClick(Self)
Else
btDirUpClick(Self);
End;
VK_Delete:Begin
// FullRemoveDir(s2,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('
ExecuteOneFile(
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(
Var
Item:TFileRecord;
ID:Integer;
Begin
Result:=False;
GetItemByList(ListItem, Item);
If Item.Name=ConstDirUp Then Exit;
ID:=Item.ID;
AllFiles.Items[ID].Checked:=
If AllFiles.Items[ID].Checked
Then ListItem.StateIndex:=
Result:=AllFiles.Items[ID].
ShowInfo;
End;
Procedure TfrFilePanel.SelectLastItem;
Var
ListItem:TListItem;
StartIndex:Integer;
Begin
StartIndex:=0;
Repeat
ListItem:=lvFiles.FindCaption(
If ListItem=nil Then
Begin
lvFiles.ItemFocused:=lvFiles.
lvFiles.Selected:=lvFiles.
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(
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+
Tmp:=RenameOneFile(OldName, NewName);
If Tmp<0 Then
Begin
TmpStr:=GetFileError(Tmp)+#0;
Application.MessageBox(@
Exit;
End;
If IsDirectory(Item) Then
LastCaption:=
Else
LastCaption:=Name;
LastExt:=Ext;
Result:=True;
End;
Procedure TfrFilePanel.TryMoveFile;
Var
Item:TFileRecord;
NewName:String;
Begin
GetItemByList(lvFiles.
If Item.Name=DirUpItem.Name Then Exit;
NewName:=UseCopyToDir+
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(
End;
//Создать каталог
Procedure TfrFilePanel.CreateFolder;
Var
FolderName:String;
Tmp:Integer;
TmpStr:String;
Begin
FolderName:=ConstLastRequest;
If Not(GetNameQuery('
If FolderName='' Then Exit;
Tmp:=CreateOneFolder(
If Tmp=F_ER_SUCCESS Then
Begin
LastCaption:=
LastExt:='';
Refresh;
Exit;
End;
TmpStr:=GetFileError(Tmp)+#0;
Application.MessageBox(@
End;
Procedure TfrFilePanel.SetDrive(Drive:
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(
End;
Dir:=CurrentFullPath+#0;
SetCurrentDirectory(@Dir[1]);
End;
//Открытиефайла
procedure TfrFilePanel.lvFilesDblClick(
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.
Exit;
End;
ErrorCode:=ExecuteOneFile(
If ErrorCode>32 Then Exit;
ErrorString:=GetExecuteError(
Application.MessageBox(@
end;
procedure TfrFilePanel.btDirUpClick(
Информация о работе Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам