Автор работы: Пользователь скрыл имя, 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 Охрана жизнедеятельности на производстве
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А Техническое задание
ПРИЛОЖЕНИЕ Б Описание программы
ПРИЛОЖЕНИЕ В Программа и методика испытания
ПРИЛОЖЕНИЕ Г Руководство оператора
ПРИЛОЖЕНИЕ Г Руководство программиста
ПРИЛОЖЕНИЕ Д Содержание электронного носителя
ПРИЛОЖЕНИЕ Л Листинг программных модулей
'Death Metal','Pranks','Soundtrack','
'Trip-Hop','Vocal','Jazz+Funk'
'Instrumental','Acid','House',
'Alternative
Rock','Bass','Punk','Space','
'Instrumental
Rock','Ethnic','Gothic','
'Pop-Folk','Eurodance','Dream'
'Top 40','Christian
Rap','Pop/Funk','Jungle','
'Psychadelic','Rave','
'Acid Jazz','Polka','Retro','
'Folk-Rock','National
Folk','Swing','Fast Fusion','Bebob','Latin','
'Celtic','Bluegrass','
'Psychedelic Rock','Symphonic Rock','Slow Rock','Big Band','Chorus',
'Easy Listening','Acoustic','Humour'
'Chamber Music','Sonata','Symphony','
'Satire','Slow
Jam','Club','Tango','Samba','
'Power Ballad','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo',
'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House',
'Hardcore','Terror','Indie','
'Christian Gangsta','Heavy
Metal','Black Metal','Crossover','
'Christian Rock','Merengue','Salsa','
var
frSearchmp3: TfrSearchmp3;
implementation
{$R *.dfm}
{$R WindowsXP.res}
var
FileName: string; // имя или маскафайла
cDir: string;
n: integer; // количество файлов, удовлетворяющих запросу
function ReadID3Tag(FileName: string): TID3Tag;
var
FS: TFileStream;
Buffer: array [1..128] of Char;
begin
FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
FS.Seek(-128, soFromEnd);
FS.Read(Buffer, 128);
with Result do
begin
ID := Copy(Buffer, 1, 3);
Titel := Copy(Buffer, 4, 30);
Artist := Copy(Buffer, 34, 30);
Album := Copy(Buffer, 64, 30);
Year := Copy(Buffer, 94, 4);
Comment := Copy(Buffer, 98, 30);
Genre := Ord(Buffer[128]);
end;
finally
FS.Free;
end;
end;
// поиск файлов
procedure TfrSearchmp3.Find;
var
SearchRec: TSearchRec; // информация о файле или каталоге
i,j: Integer;
begin
i:=0; j:=0;
if edt1.Text<>'' then inc(i);
if edt2.Text<>'' then inc(i);
if edt3.Text<>'' then inc(i);
if edt4.Text<>'' then inc(i);
if edt5.Text<>'' then inc(i);
if edt6.Text<>'' then inc(i);
GetDir(0,cDir); // получить
имя текущего каталога
if cDir[length(cDir)] <>
'\' then cDir := cDir+'\';
if FindFirst(FileName, faAnyFile,SearchRec)
= 0 then
repeat
if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then
begin
With ReadID3Tag(SearchRec.Name) Do
Begin
edt7.Text:=ID;
edt8.Text:=Titel;
if ((edt1.Text=edt8.Text) and (edt8.Text<>'')) then inc(j);
edt9.Text:=Artist;
if ((edt2.Text=edt9.Text) and (edt9.Text<>'')) then inc(j);
edt10.Text:=Album;
if ((edt3.Text=edt10.Text) and (edt10.Text<>'')) then inc(j);
edt11.Text:=Year;
if ((edt4.Text=edt11.Text) and (edt11.Text<>'')) then inc(j);
edt12.Text:=Comment;
if ((edt5.Text=edt12.Text) and (edt12.Text<>'')) then inc(j);
If (Genre>=0) and (Genre<=146) Then
edt13.Text:=Genres[Genre]
Else
edt13.Text:='N/A';
if ((edt6.Text=edt13.Text) and (edt13.Text<>'')) then inc(j);
End;
if ((i=j) and (i<>0)) then
begin
lst1.Items.Add(cDir + SearchRec.Name);
n := n + 1;
end;
end;
until FindNext(SearchRec) <> 0;
// обработкаподкаталога
if FindFirst('*', faAnyFile, SearchRec) = 0 then
repeat
if (SearchRec.Attr and faDirectory) = faDirectory then
if SearchRec.Name[1] <> '.' then
begin
ChDir(SearchRec.Name);// войтивкаталог
Find; // выполнить поиск в подкаталоге
ChDir('..');// выйти из каталога
end;
until FindNext(SearchRec) <> 0;
end;
// Кнопка "Поиск"
procedure TfrSearchmp3.btn2Click(Sender: TObject);
begin
if not DirectoryExists(edt15.Text) then
begin
ShowMessage('Каталог указан
edt15.SetFocus;
exit;
end;
btn2.Enabled := False;
lbl7.Caption := '';
lbl7.Repaint;
lst1.Clear;
// очистить ListBox
lbl7.Caption := '';
FileName := edt14.Text; // что искать
cDir := edt15.Text; // где искать
n:=0; // кол-во найденных файлов
ChDir(cDir);
// войти в каталог начала поиска
Find; // выполнить поиск
if n = 0 then
ShowMessage('Файлов, удовлетворяющих критерию поиска нет.')
else lbl7.Caption := 'Найденофайлов:' + IntToStr(n);
btn2.Enabled := True;
end;
// Выбратькаталог
function TfrSearchmp3.GetPath(mes: string):string;
var
Root: string; // корневой каталог
pwRoot : PWideChar;
Dir: string;
begin
Root := '';
GetMem(pwRoot, (Length(Root)+1) * 2);
pwRoot := StringToWideChar(Root,pwRoot,
if SelectDirectory(mes, pwRoot, Dir)
then
if length(Dir) = 2
then GetPath := Dir+'\'
else GetPath := Dir
else
GetPath := '';
end;
// Кнопка "Обзор"
procedure TfrSearchmp3.btn1Click(Sender: TObject);
var
Path: string;
begin
Path := GetPath('Выберите папку');
if Path <> ''
then edt15.Text := Path;
end;
end.
Листинг6 – Модуль Main.pas
{ Модуль Main.pas } { гр. П-1 }
{ Разработчик: Герасимчук, А.В.} { Модифицирован: 10 июня 2011 }
{ )
{ Главный модуль программы
}
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FileCtrl, StdCtrls, ShellApi, ComCtrls, frFilePanelU, ImgList, ExtCtrls, Menus,
XPMan, sSkinManager;
type
TfmDarkickCommander = class(TForm)
frFilePanelLeft: TfrFilePanel;
pnTop: TPanel;
FileListBox1: TFileListBox;
ImageList1: TImageList;
splPanelsSplitter: TSplitter;
frFilePanelRight: TfrFilePanel;
mmMenu: TMainMenu;
miFile: TMenuItem;
miHelp: TMenuItem;
miExit: TMenuItem;
pnBottom: TPanel;
cmbxCommand: TComboBox;
lbPath: TLabel;
lbItem: TLabel;
miAbout: TMenuItem;
btEdit: TButton;
btCopy: TButton;
btMove: TButton;
btFolder: TButton;
btDelete: TButton;
Button1: TButton;
btn1: TButton;
xpmnfst1: TXPManifest;
N1: TMenuItem;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure cmbxCommandKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cmbxCommandEnter(Sender: TObject);
procedure miAboutClick(Sender: TObject);
procedure btEditClick(Sender: TObject);
procedure btCopyClick(Sender: TObject);
procedure btMoveClick(Sender: TObject);
procedure btFolderClick(Sender: TObject);
procedure btDeleteClick(Sender: TObject);
procedure frFilePanelLeftbtDirRootClick(
procedure frFilePanelLeftdcbxDriveChange
procedure frFilePanelLeftpnFilesInfoClic
procedure Button1Click(Sender: TObject);
procedure frFilePanelLeftbbRefreshClick(
procedure frFilePanelLeftlvFilesKeyDown(
Shift: TShiftState);
procedure frFilePanelRightlvFilesKeyDown
var Key: Word; Shift: TShiftState);
procedure btn1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmDarkickCommander: TfmDarkickCommander;
implementation
uses FilesExU, About, fmAnyMessageU,
fmSearch;
Var
FirstRun:Boolean;
{$R *.DFM}
procedure TfmDarkickCommander.FormClose(
begin
frFilePanelLeft.Done;
frFilePanelRight.Done;
end;
procedure TfmDarkickCommander.
begin
If FirstRun Then
Begin
frFilePanelRight.Init(
frFilePanelLeft.Init(
FirstRun:=False;
End;
frFilePanelLeft.Refresh;
frFilePanelRight.Refresh;
end;
procedure TfmDarkickCommander.
begin
FirstRun:=True;
//frFilePanelLeft.Refresh;
// Refresh;
//----------------------------
//----------------------------
//frFilePanelLeft.
//frFilePanelRight.
//frFilePanelLeft.
//frFilePanelRight.
Информация о работе Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам