3.Руководство программиста.
Пакет Delphi предназначен для создания больших программ, которые неудобно размещать в одном файле. В связи с этим программа формируется из нескольких файлов. Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширением pas). Каждый из таких файлов описывает программную единицу Object Pascal.
Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi.
Модули предназначены для размещения в них фрагментов программ. Текст модуля тоже сформирован Delphi, но программист может изменять его, придавая программе нужную функциональность.
После служебного слова Uses в каждом модуле идет перечисление тех модулей, к которым может обращаться данный модуль в процессе своей работы, что значительно облегчает задачу программиста при написании программы.
Проект данной работы состоит из трёх форм:
Главной формы, на котором расположено поле вставки воспроизведения текста.
Форма с справочной информацией
Форма с историей программы
Таблица 1. – Используемые формы и модули.
Название |
Описание |
Размер |
Unit1.pas |
Главный модуль |
4,56 КБ |
Unit2.pas |
Модуль справки |
354 байт |
Unit3.pas |
Модуль истории приложения |
507 байт |
Unit1.dfm |
Главная форма |
210 КБ |
Unit2.dfm |
Форма справки |
3,17 КБ |
Unit3.dfm |
Форма истории приложения |
822 байт |
Project1.dpr |
Файл проекта |
379 байт |
Project1.res |
Файл ресурсов |
5,15 КБ |
Основной частью программы является файл с расширением dpr. При компиляции программы Delphi создает файлы с расширениями pas, dfm и dcu для каждого модуля: pas – файл содержит копию текста из окна кода программы, в файле с расширением dfm хранится описание содержимого окна программы, а в dcu-файле – результат преобразования в машинные инструкции текста из обоих файлов. Файлы dcu создаются компилятором и дают необходимую базу для работы компоновщика, который преобразует их в единый загружаемый файл с расширением exe.
Главный модуль содержит следующие программные элементы:
Класс формы TForm1.
Обработчики событий:
procedure SpeedButton1Click(Sender: TObject); // Кнопка, воспроизводящая текст
procedure FormCreate(Sender: TObject); //задание начальных параметров
procedure Timer1Timer(Sender: TObject); // начало и завершение воспроизведения текста
procedure TrackBar1Change(Sender: TObject); // скорость воспроизведения звука
procedure TrackBar2Change(Sender: TObject); //громкость воспроизведения звука
procedure N6Click(Sender: TObject); // пункт меню «Справка»
procedure N5Click(Sender: TObject);// пункт меню «История прослушивания»
procedure N3Click(Sender: TObject); // пункт меню «Загрузить»
procedure N2Click(Sender: TObject); // пункт меню «Выход»
procedure N4Click(Sender: TObject); // пункт меню «Сохранить»
Модуль справки содержит следующие программные элементы:
Класс формы TForm2;
Модуль истории прослушивания содержит следующие программные элементы:
Класс формы TForm3;
Обработчики событий:
procedure Button1Click(Sender: TObject); // очистка поля истории
В разработке приложения использовались глобальные и локальные переменные.
Рассмотрим глобальные переменные в приложении OS Windows «Программе чтения текста- Читалке» :
St :string - предназначена для работы со строковым значением в поле Edit1 на Form1 и Memo1 на Form3
Stream:cardinal - значения потока размер которого не гарантируется.
i :integer- значение счетчика
sp:integer- позиция TrackBar1 скорости воспроизведения звука
vv: integer – позиция TrackBar2 громкости воспроизведения звука
Рассмотрим локальные переменные программы:
f: File – переменная хранения логического файла
4. Руководство пользователя
Назначение программы:
Программа, разработанная в курсовой работе, предназначена для минимизирования действий пользователя и предоставлении большего удобства в чтении текстов. Приложение просто в использовании и не требует установки.
Системные требования:
ОС Windows XP\Vista.
Объем занимаемой оперативной памяти 639 КБ
На HDD запускаемый файл с расширением exe занимает 524 КБ
Для запуска программы достаточно скопировать файл с расширением .exe в любую папку, расположенную на жестком диске и запустить его.
Для деинсталляции достаточно лишь удалить файл расширением .exe с диска.
После запуска программы открывается окно главной формы (рис.23).
Рис.23 – Form1
Для использования приложения необходимо ввести текст в поле (рис.24) и нажать на кнопку «Воспроизведение» (рис.25).
Рис.24 – Поле ввода текста
Рис.25 – Кнопка «Воспроизведение текста»
Пользователю предоставляется возможность изменить громкость и скорость воспроизведения звука, переместив ползунок с нужными параметрами.(рис.26)
Рис.26 – Ползунки изменения громкости и скорости воспроизведения
Нажав клавишу «Меню» в левом верхнем углу пользователь имеет возможность сохранить текущее состояние приложения (Сtrl+A), загрузить ранее сохранённый файл(Ctrl+B) и выйти из приложения(Ctrl+C).
Также пользователь может просмотреть краткую справку о программе, нажав в верхнем меню колонку «Справка» или с помощью горящих клавиш Ctrl+F (рис.27)
Рис.27 Меню «Справка»
Справка имеет вид нового окна с кратким описанием программы, списком горячих клавиш и информации о создателе программы(рис.28)
Рис.28 – Окно справки
При нажатии клавиши в верхнем Меню «История прослушивания» или горячих клавиш Ctrl+E откроется новое окно с текстами, которые пользователь воспроизводил ранее. Также имеется возможность очистить окно истории, нажав клавишу «Очистить историю» (рис.29)
Рис.29 – Окно «История прослушивания»
Заключение
В процессе выполнения курсовой работы было разработано приложение ОС Windows «Программа для чтения текста – читалка » в среде программирования Borland Delphi.
Программа, разработанная в курсовой работе, предназначена для удобного чтения текста, что значительно сокращает затраченное время на прочтение текста самим пользователем . При этом сама программа занимает очень мало места на диске, не требует установки и высоких системных требований.
Список использованных источников
Архангельский А.Я. Object Pascal в Delphi. – Изд. Бином, СПб, 2002г.
Архангельский А.Я. Delphi 6.0. Справочное пособие. – Бином, СПб, 2001г.
Фаронов В.В. Delphi. Программирование на языке высокого уровня. – Питер, СПб, 2005г.
Справочная система среды Delphi.
Приложение A.
(обязательное)
Текст программы
1.Модуль Unit1. Pas // модуль главного окна приложения
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, bass, ComCtrls, Menus;
type
TForm1 = class(TForm)
Timer1: TTimer;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
Label4: TLabel;
Panel2: TPanel;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
Label3: TLabel;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
St:string;
Stream:cardinal;
i ,sp,vv:integer;
s:string;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0; //обнуляем счётчик
if BASS_Init(-1, 4410, 0, handle, nil) = false then //загружаем поток с параметрами, указанными производителем библиотеки
ShowMessage('Поток не инициализирован');
Bass_SetVolume(0.5); //объем звука
TrackBar2.Position:=50; // устанавливаем первоначальное положение ползунка
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Bass_StreamFree(Stream); //Очищаем поток и выходим
Close;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Bass_StreamFree(Stream);//очищаем поток
Timer1.Enabled:=true;
I:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
st:=AnsiLowerCase(edit1.Text);// AnsiLowerCase преобразует всё в нижний регистр чтобы различий между введенными символами в верхнем и нижнем регистрах
if Stream=0 then begin // Stream это воспроизводимый поток и если он равен 0 ничего больше не воспроизводиться, и можно воспроизводить следующий
if i<>Length(st)then //проверяем длину строки
Inc(i); // увеличиваем счетчик i на единицу до тех пор, пока I не будет равна длине строки
Stream:=BASS_StreamCreateFile(False, Pchar(st[i]+'.mp3'), 0, 0, BASS_UNICODE);//Создаём звуковой поток Stream c определённой записью из локального файла (False, Pchar(st[i]+'.mp3'), 0, 0, BASS_UNICODE)= (справка отключена, название файла который воспроизводится,смещение,длина,кодировка)
BASS_ChannelPlay(Stream, true);// Начать проигрывать звук с записью Stream
Stream:=0;
end;
if i=Length(st)then //если воспроизвели все буквы
Timer1.Enabled:=false;//воспроизвели звук остонавливаем таймер
If Timer1.Enabled=false then Form3.Memo1.Lines.Add(st); // сохранение воспроизведений на форме 3
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Timer1.Interval:=TrackBar1.Position*10; //присваиваем интервалу таймера позицию TrackBar1 умноженную на 10 для соответствия
Label2.caption:=IntToStr(TrackBar1.Position*10); // так как у TrackBar1 min значение 0 а max 100, умножаем позицию на 10, чтобы для удобства показывалось большое значение
end;
procedure TForm1.TrackBar2Change(Sender: TObject);
begin
Bass_SetVolume(TrackBar2.Position/100);
end;
procedure TForm1.N6Click(Sender: TObject); // показать справку о программе
begin
Form2.Show;
end;
procedure TForm1.N5Click(Sender: TObject); //показать историю прослушенного текста
begin
Form3.Show;
end;
procedure TForm1.N3Click(Sender: TObject); //загрузка игры
var
f: File;
begin
if OpenDialog1.Execute then
s:=OpenDialog1.FileName ;
AssignFile(f,s);
{$I-} Reset(f,1); {$I+}
if IOResult <> 0 then begin
Application.MessageBox('Ошибка чтения файла или файл отсутствует!'+#13+'Создайте схему ДТП!','Ошибка',mb_ok);
Exit;
end;
BlockRead(f,st,sizeof(st));
BlockRead(f,sp,Sizeof(sp));
BlockRead(f,vv,Sizeof(vv));
CloseFile(f);
Form1.Edit1.Text:=st;
TrackBar1.Position:=sp;
TrackBar2.Position:=vv;
end;
procedure TForm1.N4Click(Sender: TObject); //сохранение игры
var
f: File;
begin
if SaveDialog1.Execute then begin
if FileExists(SaveDialog1.FileName) then
if Application.MessageBox('Такой файл уже существует. Перезаписать?','Вопрос',mb_YesNo) <> 6 then Exit;
AssignFile(f,SaveDialog1.FileName+'.sav');
{$I-} ReWrite(f,1); {$I+}
if IOResult <> 0 then begin
Application.MessageBox('Ошибка записи файла!','Ошибка',mb_ok);
Exit;
end;
BlockWrite(f,st,SizeOf(st));
sp:=TrackBar1.Position; //переменная отвечающая за позицию скорости воспроизведения
vv:=TrackBar2.Position; //переменная отвечающая за позицию громкости
BlockWrite(f,sp,SizeOf(sp));
BlockWrite(f,vv,SizeOf(vv));
CloseFile(f);
end;
end;
end.
2. Модуль Unit2. Pas // модуль справки
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
end.
Модуль Unit3. Pas // модуль истории прослушивания
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type
TForm3 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
Form3.Memo1.Clear;
end;
end.