Разработка программных средств базы данных видеодисков

Модели баз данных. Локальная, файл-серверная, клиент-серверная и распределенная архитектуры. Технология BDE для доступа к данным. Драйверы баз данных. Создание таблицы, интерфейс программы, дерево объектов, инсталлятор. Системы визуальной разработки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 04.06.2013
Размер файла 989,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство Образования Российской Федерации

Рязанский Государственный Радиотехнический Университет

Кафедра САПР ВС

Дисциплина: «Инженерная и компьютерная графика»

Пояснительная записка

к курсовой работе

по теме:

«Разработка программных средств БД видеодисков»

Выполнила:

ст. гр. 547

Хрусталёв К.Д.

Проверил:

Бакулев А.В.

Рязань

2007 г.

Оглавление

1. Введение

2. Теоретический раздел

2.1 Модели баз данных

2.2 Архитектура СУБД

2.3 Технология BDE для доступа к данным

2.4 Драйверы баз данных

3. Практический раздел

3.1.1 Проектирование БД

3.1 Создание таблицы

3.2 Интерфейс программы

3.3 Дерево объектов

3.4 Инсталлятор

3.5 Справка

4. Исходный текст программы

4.1 Файл проекта

4.2 Unit1

4.3 Unit2

4.4 Unit3

4.5 Unit4

4.6 Unit6

4.7 hkdunit.pas

Список используемой литературы

1. Введение

База данных -- это совокупность записей различного типа, содержащая перекрестные ссылки.

Записи одного типа внутри базы данных хранятся в таблицах.

Файл -- это совокупность записей одного типа, в котором перекрестные ссылки отсутствуют.

Более того, в определении вообще нет упоминания о компьютерной архитектуре. Дело в том, что, хотя в большинстве случаев база данных действительно представляет собой один или (чаще) несколько файлов, физическая их организация существенно отличается от логической. Таблицы могут храниться как в отдельных файлах, так и все вместе. И наоборот, для хранения одной таблицы иногда используются несколько файлов. Для поддержки перекрестных ссылок и быстрого поиска обычно выделяются дополнительные специальные файлы.

В ряде случаев базы данных реализуются вообще без привлечения файловой системы. Это связано как с ее ограничениями (в ряде операционных систем размер файла не может превышать 2 Гбайта), так и с необходимостью обеспечить максимально быструю работу с жестким диском. Например, некоторые системы работают с носителями, подвергнутыми простейшему форматированию, несовместимому со стандартами DOS или Windows и предназначенному исключительно для упрощения процесса доступа к данным. Есть программы, обрабатывающие данные на специализированных дисковых носителях RAID и множестве других периферийных устройств, назначение которых только одно: повысить скорость доступа к большим объемам сведений.

Поэтому при работе с базами данных обычно применяются понятия более высокого логического уровня: запись и таблица, без углубления в подробности их физической структуры.

Таким образом, сама по себе база данных -- это только набор таблиц с перекрестными ссылками. Чтобы универсальным способом извлекать из нее группы записей, обрабатывать их, изменять и удалять, требуются специальные программы, которые называются системами управления базами данных или сокращенно СУБД.

Функциональные возможности разных СУБД лежи в весьма широком диапазоне. В некоторые комплексы встроены специализированные языки программирования и даже целые системы визуальной разработки, генераторы сложных отчетов, аналитические модули. Они способны поддерживать одновременную работу с данными десятков тысяч пользователей. Другие СУБД обладают только базовым набором возможностей (хранение данных в таблицах и выполнение запросов). При их использовании разработчикам приходится самостоятельно программировать работу по созданию отчетов, удобному просмотру и редактированию содержимого базы данных и так далее. В зависимости от предоставляемых ими средств СУБД обычно сильно различаются по цене.

2. Теоретический раздел

2.1 Модели баз данных

Таблицы, в которых хранятся данные, состоят из наборов записей одинаковой структуры. Можно сказать, что таблица -- это двумерный массив, где строки образованы отдельными записями, а столбцы -- полями этой записи. Более точно таблица представляется как одномерный массив переменной длины из записей конкретной структуры (тип record Паскаля).

Модель базы данных, состоящей из подобных таблиц, называется реляционной. Практически все ведущие производители СУБД поддерживают именно эту модель баз данных, и в книге в дальнейшем будет рассказываться именно о ней. Реляционная модель хороша тем, что проста в работе и реализации и позволяет создавать быстро работающие системы.

Имеется еще несколько моделей баз данных. Некоторые из них значительно эффективнее реляционной, но не получили широкого распространения из-за сложности создания подходящих СУБД.

О В иерархической модели данные организованы в виде деревьев.

О В сетевой модели каждый узел (набор) базы данных взаимодействует с другими узлами посредством сложной системы связей.

О В последнее время признание завоевывает объектная модель данных, когда в базе хранятся не только данные, но и методы их обработки в виде программного кода. Это перспективное направление, пока также не получившее активного распространения из-за сложности создания и применения подобных СУБД.

2.2 Архитектура СУБД

Приложения, использующие базы данных, обычно принято относить к одной из программных архитектур, имеющих свои плюсы и минусы.

Локальная архитектура

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

Файл-серверная архитектура

База данных расположена на мощном выделенном компьютере (сервере), а персональные компьютеры подключены к нему по локальной сети. На этих компьютерах установлены клиентские программы, обращающиеся к базе данных по сети. Преимущество такой архитектуры заключается в возможности одновременной работы нескольких пользователей с одной базой данных.

Недостаток такого подхода -- большие объемы информации, передаваемой по сети. Вся обработка выполняется на клиентских местах, где фактически формируется копия базы данных. Это приводит к ограничению максимально возможного числа пользователей и большим задержкам при работе с базой. Эти задержки вызываются тем, что на уровне конкретной таблицы одновременный доступ невозможен. Пока программа на одном из клиентских мест не закончит работу с таблицей (например, не выполнит модификацию записей), другие программы не могут обращаться к этой таблице. Это называется блокировкой на уровне таблицы и исключает возникновение путаницы в ее содержимом.

Клиент-серверная архитектура

В такой архитектуре на сервере не только хранится база данных, но и работает программа СУБД, обрабатывающая запросы пользователей и возвращающая им наборы записей. При этом программы пользователей уже не работают напрямую с базой данных как набором физических файлов, а обращаются к СУБД, которая выполняет операции. Нагрузка с клиентских мест при этом снимается, так как большая часть работы происходит на сервере. СУБД автоматически следит за целостностью и сохранностью базы данных, а также контролирует доступ к информации с помощью службы паролей. Клиент-серверные СУБД допускают блокировку на уровне записи и даже отдельного поля. Это означает, что с таблицей одновременно может работать любое число пользователей, но доступ к функции изменения конкретной записи или одного из ее полей обеспечен только одному из них.

Основной недостаток этой архитектуры -- не очень высокая надежность. Если сервер выходит из строя, вся работа останавливается.

Распределенная архитектура

В сети работает несколько серверов, и таблицы баз данных распределены между ними для достижения повышенной эффективности. На каждом сервере функционирует своя копия СУБД. Кроме того, в подобной архитектуре обычно используются специальные программы, так называемые серверы приложений. Они позволяют оптимизировать обработку запросов большого числа пользователей и равномерно распределить нагрузку между компьютерами в сети. Если, помимо работы с данными, требуется выполнить интенсивные вычисления (например, анализ сложной информации), программы для выполнения этих задач (они обычно называются компонентами) могут автоматически запускаться на более мощных сетевых компьютерах. Это практически полностью снимает нагрузку с клиентских мест. Такая архитектура гакже называется компонентной.

Недостаток распределенной архитектуры заключается в довольно сложном и дорого

стоящем процессе ее создания и сопровождения (администрирования), а также в высоких требованиях к серверным компьютерам.

Интернет-архитектура

Доступ к базе данных и СУБД (расположенным на одном компьютере или в сети) осуществляется из браузера по стандартному протоколу. Это предъявляет минимальные требования к клиентскому оборудованию. Такие программы называют «тонкими клиентами», потому что они способны работать даже на ПК с процессором 80386.

Благородя стандартизации всех протоколов и интерфейсов взаимодействия в Интернете такие системы легко создавать и внедрять. Например, можно не организовывать локальную сеть, а обращаться к серверу через Интернет или использовать протоколы Интернета в локальной сети (в таком случае говорят о технологиях интранет). В этом случае не требуется разрабатывать специальные клиентские программы или придумывать собственные спецификации обмена данными между сервером и клиентскими местами. Достаточно использовать готовые браузеры и программные решения.

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

2.3 Технология BDE для доступа к данным

При создании программ, работающих с базами данных, в системе Delphi традиционно используется механизм Borland Database Engine (BDE). В состав Delphi 7 входит версия BDE 5.2, которую, впрочем, можно бесплатно обновлять разными способами (например, обратившись к Web-узлу http://www.borland.com/).

Этот механизм реализован в виде набора библиотек, которые обеспечивают для программы, написанной на Паскале, простой и удобный доступ к базам данных независимо от их архитектуры. При использовании механизма BDE разработчик может не задумываться о том, как его программа будет работать с базой данных на физическом уровне: локально, в файл-серверной, либо в клиент-серверной архитектуре. Вдобавок при переходе к использованию СУБД разных производителей программисту не потребуется менять исходный код своей программы. Достаточно внести изменения только в настройки BDE.

2.4 Драйверы баз данных

Такое удобство достигается благодаря тому, что механизм BDE представляет собой программную прослойку (middleware) между клиентской программой и базой данных (или СУБД). Запрос из приложения передается внутрь механизма BDE, который использует специализированные системные программы (драйверы) для непосредственной работы с СУБД.

ВНИМАНИЕ В дальнейшем для простоты под СУБД будем понимать как специальную серверную программу управления базой данных, так и драйвер для обращения к наборам файлов в формате файл-серверных СУБД.

Такие драйверы выпускаются для каждой СУБД, и механизм BDE настраивается на их использование с помощью специального редактора, вызываемого из утилиты SQL Explorer (Проводник SQL), которая открывается командой Database > Explore (База данных > Проводник). Драйверы могут работать с базами данных в стандарте таких СУБД, как Paradox, dBase, FoxPro. Эти СУБД ранее были построены как файл-серверные, поэтому драйвер реально представляет собой весьма сложную программу, выполняющую множество функций СУБД.

Существуют и драйверы для работы с клиент-серверными СУБД (MS SQL Server, InterBase, Oracle). Такие драйверы устроены проще. Они только передают запросы и команды из BDE в СУБД и получают обратно результаты их выполнения. Всю работу по обработке данных выполняет СУБД.

В поставку BDE входит два набора драйверов.

О Первый набор предназначен для файл-серверных СУБД dBASE, Paradox, FoxPro, Access и данных в текстовом формате.

О Второй набор ориентирован на клиент-серверные СУБД InterBase, IBMDB2, Informix, ORACLE, Sybase и Microsoft SQL Server. Этот набор называется SQL Links.

Конечно, кроме системы Delphi в мире существует немало пакетов создания программ, которые позволяют обращаться к любым СУБД. Поэтому давно разработан и существует стандартный протокол ODBC (Open Database Connectivity Interface, открытый интерфейс взаимодействия с базами данных), напоминающий независимую работу BDE. Драйверы ODBC выпущены для всех без исключения СУБД, и разработчик может использовать в BDE драйверы ODBC.

Реализация в системе Delphi прослойки BDE позволяет не привязывать программу к конкретной СУБД. Если потребуется расширить число пользователей программы и перейти, например, с файл-серверной СУБД dBase на более мощную СУБД InterBase, достаточно изменить несколько настроек BDE, не исправляя исходные тексты.

3. Практический раздел

3.1 Проектирование БД

Так как справочник рассчитан на одного пользователя, достаточно использовать локальную СУБД. Выберем СУБД Paradox, поддерживаемая механизмом BDE.

Используемая база данных будет состоять из одной таблицы так как в таблице будет всего 4 поля (Имя фильма, жанр, информация и имя файла изображения/видео), и перекрестные ссылки не имеет смысла делать.

Для поля имя выделим 50 символов, этого достаточно для большинства названий фильмов.

Для поля жанр выделим 20 символов

Для поля имя файла выделим тоже 20 символов.

3.1.1 Создание таблицы

Таблица создаётся с помощью программы Database Desktop. Тип таблицы выбираем Paradox 7.

Таблица будет иметь 5 полей:

1) ID - ключевое поле, номер записи.

2) Name - название фильма, текстовое поле длиной 50 символов.

3) Ganre - жанр фильма, текстовое поле длиной 20 символов

4) Info - информация о фильме, поле типа Formatted Memo.

5) Img - текстовое поле длиной 20 символа для хранения имени файла видео или/и изображения.

Рис.1 Создание таблицы Films

Полю Name назначаем вторичный индекс NameID. Вторичный индекс нужен что бы была возможность произвести поиск и сортировку в поле Name.

Рис2. Назначение вторичного индекса

Сохраняем базу данных как Films.DB. В результате создаются 5 файлов. Из которых файл с расширением .MB - это поле типа Formatted Memo, .XGO, .YGO - в них индексируется поле Name, .DB - непосредственно сам файл таблицы.

3.2 Интерфейс программы

Рис.2.1 Главное окно

Размещено на http://www.allbest.ru/

Рис3.

Фильтр - фильтрация фильмов по жанру. При нажатии “фильтр” появляется окно с выбором жанра фильма. Жанр можно выбрать из списка, либо ввести вручную. Фильтр чувствителен к регистру. Фильтрация организуется запросом.

Рис4. Окно фильтра

Сохранить описание - сохраняет описание фильма в текстовый файл. Название текстового файла будет совпадать с названием фильма, при желании можно изменить на дугое название. Организуется стандартным в Дельфи диалогом “Save dialog”

Рис5. Окно сохранения описания фильма

Редактирование записей - окно редактирования (удаления, добавления, изменения и т.д.) записей в таблице.

Рис6. Добавить запись

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

Выход - завершение работы с программой.

3.3 Дерево объектов

Размещено на http://www.allbest.ru/

Рис.7 Дерево объектов

Окно1:

DBEdit1 - жанр

DBEdit2 - имя изображения/видео

DBGrid1 - название фильмов

DBMemo1 - описание фильмов

DataBase1

Table1

DataSourec1

Edit1 - Поиск

Image1 - Отображение изображений

Imagelist1 - изображения для кнопок

MainMenu1

MediaPlayer1 - плеер

Panel1

ProgressBar1 - отображает статус фильтрации БД

SaveDialog1 - сохранение описания фильма в файл

StatusBar1

ToolBar1

XPManifest1

Окно2:

DBEdit1 - жанр

DBEdit2 - имя изображения/видео

DBGrid1 - название фильмов

DBMemo1 - описание фильмов

DBNavigator1 - Управление базой данных

Label1

Label2

Label3

Label4

OpenPictureDialog1 - окно загрузки изображения/видео

SpeedButton1 - вызов окна загрузки изображения/видео

Окно3:

ComboBox1 - выбор жанра

SpeedButton1 - фильтровать

SpeedButton2 - выход

Окно5:

Image1

Timer1

Окно6:

Bevel1 - рамка

Label1

Label2

Memo1

SpeedButton1 - закрыть окно

3.4 Инсталлятор

В качестве создания инсталлятора используем программу WinRAR 3.6x

Устанавливаем параметры сжатия:

Рис.8 Параметры сжатия

Устанавливаем каталог в который будет распакована программа:

Рис.9 Параметры SFX

Добавляем ярлыки на рабочий стол и в ПУСК -> Программы

база данные серверный программа

Рис.10 Параметры SFX. Ярлыки

В результате генерируется SFX сценарий:

Рис.11 SFX сценарий

3.5 Справка

Справка сделана в виде HTM страниц, создавалась в редакторе Microsoft FrontPage (рис.13).

Справка вызывается при нажатии горячей клавиши [F1] либо при выборе из меню Помощь -> Справка (рис.12).

Рис.12 Вызов справки

Рис. 13 Справка

Исходный текст программы

Файл проекта:

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1}, //основная форма

Unit2 in 'Unit2.pas' {Form2}, //форма добавления записи

Unit3 in 'Unit3.pas' {Form3}, //фильтр

Unit4 in 'Unit4.pas' {Form5}, //заставка

Unit6 in 'Unit6.pas' {Form6}; //окно о программе

{$R *.res}

begin

Application.Initialize;

Form5 := TForm5.Create(Application);//форма заставки

Form5.Show;

Form5.Update;

while Form5.Timer1.Enabled do

Application.ProcessMessages;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm6, Form6);

Form5.Hide;

Form5.Free;

Application.Run;

end.

Unit1:

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, DBCtrls, Mask, Grids, DBGrids, ComCtrls, Menus,

ToolWin, DB, DBTables, XPMan, ImgList, ExtCtrls, hkdunit1, MPlayer,

ExtDlgs;

type

TForm1 = class(TForm)

DBGrid1: TDBGrid;

DBMemo1: TDBMemo;

StatusBar1: TStatusBar;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

DataSource1: TDataSource;

Table1: TTable;

Database1: TDatabase;

ProgressBar1: TProgressBar;

XPManifest1: TXPManifest;

N5: TMenuItem;

N6: TMenuItem;

ImageList1: TImageList;

Image1: TImage;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

SaveDialog1: TSaveDialog;

Edit1: TEdit;

N10: TMenuItem;

DBEdit1: TDBEdit;

Panel1: TPanel;

DBEdit2: TDBEdit;

MediaPlayer1: TMediaPlayer;

N11: TMenuItem;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

procedure N4Click(Sender: TObject);

procedure Creat_(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure ChangeEdit(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure ChangeIMG(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Max:integer;

bActive, bExclusive: Boolean;

implementation

uses Unit2, Unit3, Unit4, Unit6;

{$R *.dfm}

procedure TForm1.N4Click(Sender: TObject);

begin

Application.Terminate;

end;

procedure TForm1.Creat_(Sender: TObject);

begin

Form5.Show;

{-----инициализация бд----------}

Database1.DatabaseName:= 'MyNewAlias';

Database1.DriverName:= 'STANDARD';

Database1.Params.Clear;

Database1.Params.Add('PATH=.\base');//путь к базе данных

Table1.DatabaseName:= 'MyNewAlias';

Table1.TableName:= 'Films';//имя базы данных

Table1.Active:= True;

DataSource1.DataSet:= Table1;

{----конец инициализации бд---------}

DBedit1.DataSource:= DataSource1;

dbedit1.Datafield:='Ganre';

DBedit2.DataSource:= DataSource1;

dbedit2.Datafield:='Img';

Dbmemo1.DataSource:= DataSource1;

dbmemo1.DataField:='Info';

DBGrid1.DataSource:= DataSource1;

DBGrid1.Columns.Add.FieldName:='Name';

Statusbar1.Panels.Items[0].text :=' Всего записей: '+inttostr(Table1.RecordCount); //кол-во записей в бд

Max:=Table1.RecordCount;

Table1.IndexName:='NameID';

Table1.First;

{-----------progressBar in Statusbar---------}

with ProgressBar1 do

begin

Parent := StatusBar1;

Position := 0;

Top := 2;

Left := 120;

Height := StatusBar1.Height - Top;

Width := 150//StatusBar1.Panels[0].Width - Left;

end;

end;

procedure TForm1.N2Click(Sender: TObject);//сохранение опиёсания игры в текстовый файл

Var s:string;

begin

s:=Table1.FieldByName('Name').DisplayText;

Savedialog1.Title:=' Сохранить описание фильма: '+s;

Savedialog1.FileName:=strtst(s,'\/:*?<>|',2); //удаление спец символов

if Savedialog1.Execute then

begin

DBmemo1.Lines.SaveToFile(Savedialog1.Filename);

end;

end;

procedure TForm1.ChangeEdit(Sender: TObject);// приблизительный поиск

var s9, s7, s8 : string;

begin

if Edit1.Text<>'' then

begin

s9:=Edit1.Text;

s7:=Edit1.Text[1];

strtobig(s7,s8);

s9[1]:=s8[1];

Table1.FindNearest([s9]);

end;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.ChangeIMG(Sender: TObject); // загрузка изображения и видио файла

begin

if CheckFile('.\base\img\'+table1.FieldByName('Img').DisplayText+'.bmp')=0 //проверка наличия файла

then

begin

Image1.Picture.LoadFromFile('.\base\img\'+table1.FieldByName('Img').DisplayText+'.bmp'); //загрузкафайла изображения

end

else Image1.Picture.Graphic := nil;//иначе удаляем изображение

if CheckFile('.\base\img\'+table1.FieldByName('Img').DisplayText+'.avi')=0 then //проверка наличия файла

begin

N11.Enabled:=true; //делаем кнопку проиграть видео доступной

ToolButton4.Enabled:=true;

end

else

begin

if mediaPlayer1.Enabled then

begin

mediaPlayer1.Close;

panel1.Visible:=false;

end;

n11.Enabled:=false;

ToolButton4.Enabled:=false;

end;

end;

procedure TForm1.N11Click(Sender: TObject);//проиграть видео

begin

with MediaPlayer1 do

begin

Filename := '.\base\img\'+table1.FieldByName('Img').DisplayText+'.avi';

Open;

panel1.Visible:=true;

Display := Panel1;

DisplayRect := Panel1.ClientRect;

Play;

end;

n11.Enabled:=false;

ToolButton4.Enabled:=false;

end;

procedure TForm1.N6Click(Sender: TObject); //фильтрация базы данных

begin

if Table1.Filtered then

table1.Filtered:=false

else

Form3.Show;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

Form6.Show;

Form6.Visible:=true;

end;

end.

Unit2:

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, DBCtrls, Mask, Grids, DBGrids, ExtCtrls, ShellApi,

Buttons, ExtDlgs,hkdunit1;

type

TForm2 = class(TForm)

DBGrid1: TDBGrid;

DBEdit1: TDBEdit;

DBMemo1: TDBMemo;

DBEdit2: TDBEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

DBNavigator1: TDBNavigator;

SpeedButton1: TSpeedButton;

OpenPictureDialog1: TOpenPictureDialog;

procedure Create_(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

//функция копирования файла

function WindowsCopyFile(FromFile, ToDir : string) : boolean;

var

F: TShFileOpStruct;

begin

F.Wnd := 0; F.wFunc := FO_COPY;

FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);

ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);

F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;

result:=ShFileOperation(F) = 0;

end;

//функция переименования файла

function RenameFiles( Handle : HWnd; Src : string; New : string;

AutoRename : Boolean ) : Integer;

var

SHFileOpStruct : TSHFileOpStruct;

begin

with SHFileOpStruct do

begin

Wnd := Handle;

wFunc := FO_RENAME;

pFrom := PChar( Src );

pTo := PChar( New );

fFlags := 0;

if AutoRename then

fFlags := FOF_RENAMEONCOLLISION;

fAnyOperationsAborted := False;

hNameMappings := nil;

lpszProgressTitle := nil;

end;

Result := SHFileOperation( SHFileOpStruct );

end;

procedure TForm2.Create_(Sender: TObject);

begin

DBedit1.DataSource:= Form1.DataSource1;

dbedit1.Datafield:='Ganre';

DBedit2.DataSource:= Form1.DataSource1;

dbedit2.Datafield:='Img';

Dbmemo1.DataSource:= Form1.DataSource1;

dbmemo1.DataField:='Info';

DBGrid1.DataSource:= Form1.DataSource1;

DBGrid1.Columns.Add.FieldName:='Name';

DBNavigator1.DataSource:=Form1.DataSource1;

end;

procedure TForm2.SpeedButton1Click(Sender: TObject);

begin

if DBEdit2.Text='' then

Showmessage('Error#02 Введите новое имя файла')//Ошибка - не введено новое имя файла

else

begin

if OpenPictureDialog1.Execute then

begin

if CheckFile('.\base\img\'+OpenPictureDialog1.FileName)<>0 //проверка наличия файла

then

if not WindowsCopyFile(OpenPictureDialog1.FileName, ApplicationPath+'\base\img\') then //копирование файла

ShowMessage('Error#01 Copy Failed')

else

begin

RenameFiles(Handle,ApplicationPath+'\base\img\'+ //переименование файла с извлечением расширения

ExtractFileNameEx(OpenPictureDialog1.FileName,true),ApplicationPath+'\base\img\'+DBEdit2.Text+'.bmp',false);

end

else

Showmessage('Error#03 Copy Failed');

end;

end;

end;

end.

Unit3:

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm3 = class(TForm)

ComboBox1: TComboBox;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.SpeedButton1Click(Sender: TObject);

var i:integer;

begin

if Combobox1.Text<>'Выберите жанр:' then

begin

Form1.Table1.Filtered:=true;

for i:=0 to (Form1.progressbar1.max) do

begin

Form1.progressbar1.Position:=i;

Form1.Table1.Filter:='Ganre = ' + QuotedStr(ComboBox1.Text); //SQL запрос

end;

form1.progressbar1.Position:=0;

end;

close;

end;

procedure TForm3.SpeedButton2Click(Sender: TObject);

begin

Close;

end;

end.

Unit4:

unit Unit4;

interface

uses

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

Dialogs, ExtCtrls, jpeg, StdCtrls,unit1;

type

TForm5 = class(TForm)

Image1: TImage;

Timer1: TTimer;

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Timer1Timer(Sender: TObject);

begin

Timer1.Enabled:=false;

end;

end.

Unit6:

unit Unit6;

interface

uses

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

Dialogs, Buttons, ExtCtrls, StdCtrls;

type

TForm6 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Memo1: TMemo;

Bevel1: TBevel;

SpeedButton1: TSpeedButton;

procedure SpeedButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.SpeedButton1Click(Sender: TObject);

begin

Close;

end;

end.

Модуль hkdunit1.pas:

unit HKDUnit1;

interface

Uses SysUtils,Messages,Windows,MMSystem,Classes,Variants,Dialogs,Graphics,Forms,

Controls,ShlOBJ,comctrls, WinInet, Masks, ExtCtrls, ShellAPI,StdCtrls, Menus,

aCTIVEx,RichEdit, inifiles, ImgList;

{--------------РАБОТА С ФАЙЛАМИ------------------------------------}

//Проверка файла: 1-нет файла;0-файл присутствует

function CheckFile(filename:string):integer;

{--------------ПРИЛОЖЕНИЕ----------------------------------}

//Возвращает путь запущенной программы

function ApplicationPath: string;

{-------------РАБОТА СО СТРОКАМИ----------------------------}

//Удаление из строки ненужных символов

function strtst(var Input: string; EArray: string; Action: integer): string;

//Процедура приведения строки к верхниму регистру

procedure strtoBig(s_1 : string; var s_2: string);

function ExtractFileNameEx(FileName: string; ShowExtension: Boolean): string;

{--------------------END---------------------------------------------------------}

implementation

{------------------------------------------------------------------------------}

function ExtractFileNameEx(FileName: string; ShowExtension: Boolean): string;

var

I: Integer;

S, S1: string;

begin

I := Length(FileName);

if I <> 0 then

begin

while (FileName[i] <> '\') and (i > 0) do

i := i - 1;

S := Copy(FileName, i + 1, Length(FileName) - i);

i := Length(S);

if i = 0 then

begin

Result := '';

Exit;

end;

while (S[i] <> '.') and (i > 0) do

i := i - 1;

S1 := Copy(S, 1, i - 1);

if s1 = '' then

s1 := s;

if ShowExtension = TRUE then

Result := s

else

Result := s1;

end

else

Result := '';

end;

procedure strtoBig(s_1 : string; var s_2: string);

var s__,S__2: string;

i_,j_ : integer;

begin

s__:='абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz';

s__2:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ';

s_2:=s_1;

for i_:=1 to Length(s_1) do

for j_:=1 to 59 do

begin

if s_1[i_]=s__[j_] then

s_2[i_]:=s__2[j_];

end;

end;

{------------------------------------------------------------------------------}

function strtst(var Input: string; EArray: string; Action: integer): string;

begin

case Action of

1:

begin

while length(Input) <> 0 do

begin

if pos(Input[1], EArray) = 0 then

delete(Input, 1, 1)

else

begin

result := result + Input[1];

delete(Input, 1, 1);

end;

end;

end;

2:

begin

while length(Input) <> 0 do

begin

if pos(Input[1], EArray) <> 0 then

delete(Input, 1, 1)

else

begin

result := result + Input[1];

delete(Input, 1, 1);

end;

end;

end;

else

messagebox(0, 'Не корректный вызов функции.', '', mb_ok);

end;

end;

function CheckFile(filename:string):integer;

var f : file;

begin

assignfile(f,filename);

{$I-}

reset(f);

closefile(f);

{$I+}

if Ioresult <>0 then

CheckFile:=1

else

CheckFile:=0

end;

{------------------------------------------------------------------------------}

function ApplicationPath: string;

begin

Result := ExtractFilePath(ParamStr(0));

end;

{------------------------------------------------------------------------------}

end.

Список используемой литературы

1. Delphi7 учебный курс. С.Бобровский. Питер, 2004г. 735л.

2. Архив статей DelphiWorld 6

Размещено на Allbest.ru


Подобные документы

  • Изучение функций автоматизированных банков данных. Общие принципы описания, хранения и манипулирования данными. Анализ требований к базам данных. Файл-серверная и клиент-серверная архитектура БД. Преимущества введения системы управления базами данных.

    презентация [91,5 K], добавлен 13.08.2013

  • Этапы проектирования базы данных. Определение цели создания. Присвоение ключевых полей. Добавление данных и создание других объектов. Инфологическая и даталогическая модель. База данных "Прокат видеодисков". Создание пользовательского интерфейса.

    курсовая работа [2,3 M], добавлен 24.10.2014

  • Разработка модели и создание структуры реляционной базы данных. Организация данных в таблицах для предоставления оперативного доступа к данным. Основные структурные единицы базы данных Access: таблицы, запросы, формы, отчеты, страницы, макросы и модули.

    реферат [4,0 M], добавлен 03.02.2013

  • Модели информационного процесса обработки данных. Классификация баз данных. Сеть архитектуры и технология клиент-сервер. Создание запросов к реляционным базам данных на SQL. Работа с электронными таблицами MS Excel: форматирование данных, вычисления.

    контрольная работа [17,8 K], добавлен 17.01.2010

  • Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.

    курсовая работа [3,7 M], добавлен 04.12.2014

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Представление данных в памяти компьютера. Обобщенные структуры и модели данных. Методы доступа к информации. Физическая организация системы управления базами данных, структура сервера. Архитектура "клиент-сервер". Создание базы данных с помощью "Денвер".

    курсовая работа [770,3 K], добавлен 17.11.2014

  • Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.

    курсовая работа [2,1 M], добавлен 17.06.2013

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

    курсовая работа [2,9 M], добавлен 24.03.2023

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

    курсовая работа [2,1 M], добавлен 16.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.