
- •1.Введение
- •1.1.Этапы развития систем программирования
- •Этапы развития сп:
- •Эволюция технологий программирования.
- •1.2.Модульное и структурное программирование
- •1.3.Объектно-ориентированное программирование
- •1.4.Событийное программирование
- •1.5.Визуальное программирование
- •1.6.Компонентное программирование
- •Inplementation (реализация)
- •4.3.1.Свойства:
- •4.3.2.Методы:
- •4.3.3.События, на которые реагирует форма:
- •4.4.4.3. Иерархия компонентов vcl.
- •4.5.3.События, на которые реагируют компоненты класса tControl.
- •4.6.1.Свойства:
- •4.9.4.Простой пример из лабораторной работы № 2
- •4.9.4.1.Взаимодействие с Delphi
- •4.9.4.2.Пример:
- •4.9.5.Вложенные блоки try…except и генерация исключений
- •4.10.1.Свойства t Main Menu и t Pop Up Menu:
- •4.10.2.События объектов t Pop Up Menu:
- •4.11.4.9. T Menu Item.(элемент меню).
- •4.11.1.Свойства панели инструментов:
- •4.11.2.Кнопки панели инструментов (t Tool Button):
- •4.13.2.4.11.2. Конструирование новой формы.
- •4.13.3.4.11.3. Создание, открытие и закрытие дополнительных форм.
- •Создание формы во время вычислений.
- •4.14.3.3. Файлы.
- •4.14.1.3.3.1. Текстовые файлы.
- •4.14.1.1.Вывод или запись последовательных файлов.
- •4.14.1.2.Пример:
- •4.14.2.3.3.2. Диалоги Open File и Save File.
- •4.14.2.1.Свойства:
- •4.14.3.3.3.3. Методы доступа к файлам t String.
- •4.15.4.12. Работа с датой и временем.
- •4.15.1.4.12.1. Компонент t Timer.
- •4.15.1.1.Процедура обработки события:
- •4.15.2.4.12.2.Работа с датой.
- •4.15.3.4.12.3. Функция Sleep.
- •4.16.3.4. Графика.
- •4.16.1.3.4.1. Основные понятия.
- •4.16.2.3.4.2. Класс t Canvas.
- •4.16.2.1.Свойства:
- •4.16.7.Пример 2.
- •4.16.7.1.Масштабирование:
- •4.17.1.6. Справочные системы.
- •Проявления справочной системы:
- •4.17.1.1.6. 1. Подсказки.
- •4.18.1.1.6.2.Анатомия файла подсказки.
- •4.18.1.1.Типы гиперперехода:
- •4.18.2.1.6.3.Инструментальные средства для создания Helpа.
4.9.4.Простой пример из лабораторной работы № 2
4.9.4.1.Взаимодействие с Delphi
Как уже было сказано для всех исключений существуют стандартные обработчики подключаемые средой разработки. Как правило эти обработчики бывают разными в зависимости от способа запуска приложение:
как самостоятельного приложения или
в рамках интегрированной среды (по отладчиком).
В последнем случае все исключения перехватывает сам отладчик. И даже в том случае, если в приложение встроены средства перехвата исключений. Однако этот режим опционален.
Итак, при запуске в интегрированной среде возможны два варианта:
при возникновении исключения управление передается отладчику.
при возникновении исключения управление передается встроенным или стандартным средствам.
Для изменения режима реакции на исключения следует воспользоваться командой: Tools+Options и на вкладке Preferances изменить флажок Break on exeption. (Вкл. –отладчик; выкл. – стандартный или собственный обработчик).
4.9.4.2.Пример:
Вспомним процедуру вычисления по формуле из примера ЛР 2
procedure TMainWindow.btCalcClick(Sender: TObject);
var a, b, h: real;
begin
//=== Преобразование входных данных ===
a := StrToFloat(edA.Text); { Текст из поля edA преобразовать в Float }
b := StrToFloat(edB.Text); { Текст из поля edB преобразовать в Float }
//=== Вычисление ===
if (((a>=0.1)and(a<=1.0)) and ((b>=0.05)and(b<=3.0))) then begin
if ( a>=b ) then begin
h := 3.0*a*a - b*b;
end
else begin
h := ln(3.0*a*a - b*b);
end;
{ В заголовок метки lbResult вывести результат }
lbResult.Caption := FloatToStr( h );
end
else begin
{ В заголовок метки lbResult вывести сообщение об ошибке }
lbResult.Caption := 'Неверные параметры';
end;
end;
Если во время работы программы попытаться ввести в соответствующие поля ввода ввести нечто не соответствующее правильному числу, то возникнет исключение EConvertError при выполнении функции StrToFloat и программа будет снята. Что бы избежать такой ситуации следует перехватить это исключение.
procedure TMainWindow.btCalcClick(Sender: TObject);
var
a, b, h: real;
begin
try
//=== Преобразование входных данных ===
a := StrToFloat(edA.Text); { Текст из поля edA преобразовать в Float }
b := StrToFloat(edB.Text); { Текст из поля edB преобразовать в Float }
//=== Вычисление ===
if (((a>=0.1)and(a<=1.0)) and ((b>=0.05)and(b<=3.0))) then begin
if ( a>=b ) then begin
h := 3.0*a*a - b*b
end
else begin
h := ln(3.0*a*a - b*b);
end;
lbResult.Caption := FloatToStr( h );
else begin
{ В заголовок метки lbResult вывести сообщение об ошибке }
lbResult.Caption := 'Неверные параметры';
end;
except
on EConvertError do begin
MessageBeep(MB_ICONEXCLAMATION);
lbResult.Caption := 'Неверные параметры';
end;
end;{try}
end;{TMainWindow.btCalcClick}
4.9.5.Вложенные блоки try…except и генерация исключений
Ключевое слово raise используется для генерации исключения, как предопределенного в Delphi, так и своего собственного. Синтаксис оператора генерации исключения:
raise <исключение>
где <исключение> - переменная типа исключения, или
raise <класс исключения>.<конструктор>
Оператор raise прерывает дальнейший нормальный ход вычислений, генерирует экземпляр объекта исключения заданного класса и передает управление ближайшему обработчику соответствующего типа. Обработчик разрушает экземпляр исключения, так что о деструкторе этого объекта заботиться не приходится.
Иногда при обработке исключения возникает потребность повторной генерации исключения того класса. Это может быть связано с тем, что, проведя первичную обработку этого исключения, желательно завершить обработку с помощью обработчика верхнего уровня. Повторная генерация осуществляется оператором raise без каких либо параметров:
raise;
Допустимы вложенные блоки try…except.
Для передачи управления обработчику внешнего блока try…except можно использовать оператор raise без параметров.
Как использовать оператор raise для возбуждения исключения по инициативе приложения (см. пример ниже).
4.9.6.Класс Exception
Как уже было сказано исключение это объект класса Exception, точнее одного из его подклассов. Возможно создание своих собственных исключений.
Мы не будем подробно разбирать структуру этого класса, но обратим внимание на некоторые свойства и методы.
4.9.6.1.Свойство Message
Message: PString;
Это свойство содержит текстовую строку – сообщение.
Возможное использование:
...
try
...
except
on e: Exception do { e идентфикатор объекта исключения }
lbResult.Caption: = e.Message;
...
4.9.6.2.Метод Create
procedure Create( s: PString );
Позволяет создать объект – исключение, параметр – свойство Message. (см. пример ниже).
4.9.7.Продолжение примера из лабораторной работы № 2.
...
procedure ConvInputData(var a:real; var b:real);
begin
a := StrToFloat(MainWindow.edA.Text);
b := StrToFloat(MainWindow.edB.Text);
if not (((a>=0.1)and(a<=1.0)) and ((b>=0.05)and(b<=3.0))) then
raise EConvertError.Create(''); {строка Message не нужна}
end;{ConvInputData}
procedure TMainWindow.btCalcClick(Sender: TObject);
var
a, b, h: real;
begin
try
ConvInputData(a,b);
if ( a>=b ) then begin
h := 3.0*a*a - b*b
end
else begin
h := ln(3.0*a*a - b*b);
end;
lbResult.Caption := FloatToStr( h );
except
on EConvertError do begin
MessageBeep(MB_ICONEXCLAMATION);
lbResult.Caption := 'Неверные параметры';
end;
on e: Exception do begin {какое-то неожиданное исключение}
MessageBeep(MB_ICONEXCLAMATION);
lbResult.Caption := e.Message;
end;
end;{try}
end;{TMainWindow.btCalcClick}
4.10.Menu
В рамках Windows имеются два типа компонентов:
T Main Menu (Menu Bar).
T Pop Up Menu (контекстное меню).