
- •Введение
- •Начало работы
- •Первый проект
- •Компоненты
- •Событие и процедура обработки события
- •Структура проекта
- •Сохранение проекта
- •Компиляция
- •Ошибки
- •Предупреждения и подсказки
- •Ошибки времени выполнения
- •Внесение изменений
- •Окончательная настройка приложения
- •Перенос приложения на другой компьютер
- •Задания к лабораторной работе
- •Вопросы к лабораторной работе
- •Справочные таблицы

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
программы введет в поле редактирования, например, строку 6.2, то при выполнении инструкции
t:= StrToFloat(Edit2.Text)
возникнет исключение, т.к. при стандартной для России настройке Windows содержимое поля Edit2 и, следовательно, аргумент функции StrToFloat не является изображением дробного числа.
Если программа запущена из среды разработки, то при возникновении исключения выполнение программы приостанавливается и на экране появляется окно с сообщением об ошибке и ее типе. В качестве примера на рисунок 22 приведено окно с сообщением о том, что введенная пользователем строка не является дробным числом
Рисунок 22 – Пример сообщения о возникновении исключения (при запуске программы из Delphi)
После нажатия кнопки ОК в окне редактора кода будет выделена строка программы, содержащая инструкцию, выполнение которой вызвало исключение. Программист может продолжить выполнение программы (для этого надо из меню выбрать команду Run ► Step Over) или прервать ее выполнение. В последнем случае нужно из меню выбрать команду Run ► Program Reset.
При разработке программы программист должен постараться предусмотреть все возможные варианты некорректных действий пользователя, которые могут привести к возникновению ошибок времени выполнения (исключения), и обеспечить способы защиты от них. Обычно контроль введенных данных осуществляется с помощью механизма исключительных ситуаций. В некоторых случаях более эффективно использовать другие методы.
Внесение изменений
После нескольких запусков программы «Скорость бега» возникает желание внести изменения в программу. Например, было бы неплохо, чтобы после ввода дистанции и нажатия клавиши <Enter> курсор переходил в поле Время, а после введения времени фокус ввода получала бы кнопка «Вычислить». Чтобы в поля Дистанция и Время пользователь мог ввести только цифры.
В листинге 5 приведена программа Скорость бега, в которую добавлены процедуры обработки событий OnKeyPress для компонентов Edit1 и Edit2.
Листинг 5
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Edit1: TEdit;
Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button1: TButton; Button2: TButton;
procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{Private declarations } public
{Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var |
|
|
|
dist |
: integer; // |
дистанция, метров |
|
t |
: real; |
// |
время, как дробное число |
min |
: integer; // |
время, минуты |
|
sek |
: integer; // |
время, секунды |
|
v |
: real; |
// |
скорость |
begin
//получить исходные данные из полей ввода dist:=StrToInt(Edit1.Text); t:=StrToFloat(Edit2.Text);
//предварительные преобразования
min:=Trunc(t); // кол-во минут - это целая часть числа t sek:=Trunc(t*100) mod 100;// кол-во секунд - это дробная часть
числа t
// вычисление скорости
v:=(dist/1000) / ((min*60 + sek)/3600);
// вывод результата
Label4.Caption:='Дистанция: '+ Edit1.Text + ' м' + #13 + 'Время: '+IntToStr(min) + ' мин ' +
IntToStr(sek) + ' сек '+#13+
'Скорость: ' + FloatToStrF(v,ffFixed, 4,2) + '
км/час'; end;
procedure TForm1.Button2Click(Sender: TObject); begin
Close; // закрыть главное окно программы end;

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin
//Key - символ, соответствующий нажатой клавише.
//Если символ недопустимый, то процедура заменяет его
//на символ с кодом 0. В результате этого символ в поле
//редактирования не появляется и у пользователя создается
//впечатление, что программа не реагирует на нажатие некоторых
//клавиш.
case Key of '0'..'9':; // цифра
#8 :; // клавиша <Back Space>
#13 : Edit2.SetFocus; // клавиша <Enter> // остальные символы - запрещены
else Key :=Chr(0); // символ не отображать end;{case}
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin
{Переменная DecimalSeparator объявлена в модуле SysUtils и содержит текущий разделитель дробной и целой части}
case Key of '0'..'9':; // цифра
#8 :; // клавиша <Back Space>
'.', ',': if pos(DecimalSeparator, Edit2.Text)=0 then Key:=DecimalSeparator else Key:=#0;
#13 : Button1.SetFocus; // клавиша <Enter> // остальные символы - запрещены
else Key :=Chr(0); // символ не отображать end;{case}
end;
end.
После внесения изменений проект следует сохранить. Для этого нужно из меню File выбрать команду Save all (Записать все).
Окончательная настройка приложения
После того как программа отлажена, необходимо выполнить ее окончательную настройку, т.е. задать название программы и выбрать значок, который будет изображать исполняемый файл приложения в папке или на рабочем столе, а также на панели задач во время работы программы.
Настройка приложения выполняется на вкладке Application диалогового окна Project Options (рисунок 23), которое появляется в результате выбора из меню команды Project
►Options.
Вполе Title (Заголовок) надо ввести название приложения.
Чтобы назначить приложению значок, отличный от стандартного, нужно щелкнуть мышью на кнопке Load Icon. Затем, используя стандартное окно просмотра папок, найти подходящий значок (значки хранятся в файлах с расширением ico).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 23 – Используя вкладку Application, можно задать значок и название программы
В состав Delphi входит программа Image Editor (Редактор изображений), при помощи которой программист может создать для своего приложения уникальный значок. Запускается Image Editor выбором соответствующей команды из меню Tools.
Чтобы начать работу по созданию нового значка, нужно из меню выбрать команду File ► New, а из появившегося списка – опцию Icon File (рисунок 24).
Рисунок 24 – Начало работы над новым значком
После выбора типа создаваемого файла открывается окно Icon Properties (рисунок 25), в котором необходимо выбрать характеристики создаваемого значка: size (Размер) – 32x32 (стандартный размер значков Windows) и colors (Палитра) – 16 цветов. В результате

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
нажатия кнопки ОК открывается окно Icon1.ico (рисунок 26), в котором можно, используя стандартные инструменты и палитру, нарисовать нужный значок.
Рисунок 25 – Выбор параметров значка
Рисунок 26 – Окно рисования значка
Процесс рисования в Image Editor практически ничем не отличается от процесса создания картинки в обычном графическом редакторе, например в Microsoft Paint. Однако есть одна тонкость. Первоначально поле изображения закрашено «прозрачным» (transparent) цветом. Если значок нарисовать на этом фоне, то при его выводе части поля изображения, закрашенные "прозрачным" цветом, примут цвет фона, на котором будет находиться значок.
В процессе создания картинки можно удалить (стереть) ошибочно нарисованные элементы, закрасив их прозрачным цветом, которому на палитре соответствует левый квадрат в нижнем ряду (рисунок 27).
Рисунок 27 – Палитра
Кроме «прозрачного» цвета в палитре есть «инверсный» цвет. Нарисованные этим цветом части рисунка при выводе на экран окрашиваются «инверсным», относительно