Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

try
ScrollBarl. Max := ScrollBarl. Min - 1;
except
on E: EInvalidOperation do
MessageDlg( 'Игнорируем исключение: '- + E. Message, mtlnformation, [mbOK], O)
end;

В приведенном примере мы присваиваем исключению EInvalidOperation временное имя Е. Затем в окне сообщения выводим текст ошибки E. Message, выдаваемый Delphi по умолчанию (если бы не было нашего обработчика ошибки).

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

try
{ операторы }
except
on <класс исключения> do
begin
{операторы обработки исключения}
raise; // Регенерация исключения
end;
end;

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

Контрольные вопросы

Что понимают под исключительной ситуацией

ПРАКТИЧЕСКИЕ И ЛАБОРАТОРНЫЕ ЗАНЯТИЯ


НЕ нашли? Не то? Что вы ищете?

Лабораторная работа №1

Тема: Язык программирования Delphi. Этапы разработки программы.

Цель: Сформировать практические навыки: реализация линейных процессов обработки данных с помощью оператора присваивания Object Pascal; построение однооконных интерфейсов с помощью визуального компонента «окно» (класс TForm) и визуальных компонентов панели инструментов Standard: «метка» (класс TLabel), «редактор» (класс TEdit), «кнопка» (класс TButton).

Задание

1. В соответствии с вариантами задания и приведенной ниже спецификацией реализуйте приложение под Windows.

2. Разработайте тестовые задания, и оттестируйте программу одним из методов тестирования.

Спецификация приложения

1. В соответствии с приведенными вариантами заданий реализуйте приложение под Windows, используя для организации пользовательского интерфейса следующие элементы управления: «форма» (класс TForm), «кнопка» (класс TButton), «метка» (класс TLabel), «однострочный редактор» (класс TEdit). Ввод данных и вывод результатов осуществляйте в элементы управления «однострочный редактор». Подписи к однострочным редакторам выполните с помощью элементов «метка». Вычисление результата свяжите с нажатием на элементе управления «кнопка» левой клавиши мыши.

2. Организуйте контроль содержимого строки, вводимой в элемент «однострочный редактор». Если вводимая строка не соответствует заданному формату, то необходимо предусмотреть следующее: в окне сообщений вывести сообщение об ошибке, очистить строку, введенную в «однострочный редактор».

Рекомендации к выполнению

1. Для организации управляющей структуры программы используйте оператор присваивания.

2. Для выполнения заданий используйте операции mod, div и стандартные функции Abs, Int, Frac, Trunc, Round, Odd.

3. Для преобразования введенных значений из строкового формата в числовой, а результатов – из числового формата в строковый формат используйте библиотечные подпрограммы StrToInt, StrToFloat, IntToStr, FloatToStr модуля Sysutils.

4. Организуйте контроль ввода данных в элемент «однострочный редактор». Для этого используйте блок try…finally и процедуру ShowMessage модуля Dialogs.

5. Разработанные приложения сохраняйте в отдельной папке.

Варианты заданий

1. Вычислите значение функции

2. Вычислите площадь треугольника со сторонами a, b, c по формуле Герона:

3. Вычислите высоты треугольника со сторонами a, b, c по формулам:

4. Вычислите площадь поверхности s и объем v усеченного конуса, используя функцию возведения в квадрат SQR:

5. Вычислите значение функции, используя функцию возведения e в заданную степень EXP и функцию SIN:

6. Выведите третий справа разряд целого числа, содержащего не менее трех разрядов. Для решения используйте операции mod, div.

7. Выведите первый после десятичной точки разряд дробной части действительного числа, содержащего не менее одного разряда в дробной части. Для решения используйте функции Int, Frac.

Пример

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

Рис. 1

Ей соответствует модуль, текст которого приведен ниже.

unit Unit1;

interface

uses

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

  StdCtrls;

type

  TForm1 = class(TForm)

  Edit1: TEdit;

  Edit2: TEdit;

  Label1: TLabel;

  Label2: TLabel;

  Button1: TButton;

  Edit3: TEdit;

  Label3: TLabel;

  procedure Button1Click(Sender: TObject);

  private

  {Private declarations}

  public

  {Public declarations}

  end;

var

  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var a, b,c: real;

begin

  a:= StrToFloat(Edit1.Text);  //Преобразуем введенную строку в вещественное число

  b:= StrToFloat(Edit2.Text);//Преобразуем введенную строку в вещественное число

  c:= a/b;

  Edit3.Text:= FloatToStr(c); //Преобразуем вещественное число в строку

  Edit1.SetFocus;  //Устанавливаем фокус ввода на Edit1

end;

end.

Разработанное выше приложение имеет ряд недостатков:

• приложение не работает, если при вводе допускаются ошибки: введенная строка не является изображением числа или ни одного символа не было введено в строку;

• возникает ошибка выполнения, если делитель равен 0.

Указанных недостатков лишено приложение, текст модуля которого приведен ниже. Его интерфейс совпадает с интерфейсом приложения, описанного выше.

В этом приложении нельзя покинуть элемент управления «однострочный редактор» (переместить фокус ввода на другой визуальный компонент), пока не введена строка, изображающая число. В случае ошибки ввода пользователь приложения получает окно, содержащее сообщение об ошибке. Если он закрывает окно сообщения, фокус ввода вновь устанавливается в «однострочный редактор», содержащий строку с ошибкой. В случае, когда делитель равен нулю, пользователь также получает окно с сообщением о делении на ноль. Когда он закрывает окно сообщения, фокус ввода вновь устанавливается в «однострочный редактор», содержащий строку с ошибкой.

procedure TForm1.Button1Click(Sender: TObject);

var a, b,c: real;

begin

try

  a:= StrToFloat(Edit1.Text);  //Преобразуем введенную строку в вещественное число

  b:= StrToFloat(Edit2.Text);  //Преобразуем введенную строку в вещественное число

  c:= a/b;

  Edit3.Text:= FloatToStr(c);  //Преобразуем вещественное число в строку

  Edit1.SetFocus;  //Устанавливаем фокус ввода на Edit1

except

  on EZerodivide do  //операторы выполняются

  begin  //в случае деления на ноль

  ShowMessage('Деление на ноль');

  Edit2.SetFocus;

  end;

end;

end;

procedure TForm1.Edit1Exit(Sender: TObject);

var a: real;

begin

  try

  a:= StrToFloat(Edit1.Text)

  except

  on EConvertError do

  begin

  ShowMessage('Ошибка ввода');

  Edit1.SetFocus;

  end;

  end;

end;

procedure TForm1.Edit2Exit(Sender: TObject);

var a: real;

begin

  try

  a:= StrToFloat(Edit2.Text)

  except

  on EConvertError do

  begin

  ShowMessage('Ошибка ввода');

  Edit2.SetFocus;

  end;

  end;

end;

end.

Содержание отчета

1. Задание.

2. Текст программы на Object Pascal.

3. Тестовые наборы данных для тестирования приложения.

Контрольные вопросы

1. Назовите синтаксические правила, в соответствии с которыми записывается оператор присваивания.

2. Укажите порядок, в котором выполняется оператор присваивания.

3. Какое отношение должно существовать между ссылкой на переменную, стоящую слева от символа оператора присваивания, и типом выражения, стоящего справа от него?

4. В каком разделе подпрограммы описываются переменные?

5. Какую информацию извлекает компилятор из описания переменной?

6. Для чего предназначена функция StrToFloat?

7. Для чего предназначена процедура ShowMessage?

8. Для чего предназначен метод SetFocus?

9. Для чего предназначена функция FloatToStr?

10. Для чего предназначен визуальный компонент «метка» (тип TLabel)?

11. Для чего предназначен визуальный компонент «однострочный редактор» (тип TEdit)?

12. Для чего предназначен визуальный компонент «командная кнопка» (тип TButton)?

13. Когда вызывается событийная процедура OnExit и как создать шаблон ее кода для компонента «однострочный редактор» (тип TEdit) в интегрированной среде разработки (IDE)?

14. Когда вызывается событийная процедура OnClick и как создать шаблон ее кода для компонента «командная кнопка» (тип TButton) в интегрированной среде разработки (IDE)?

Лабораторная работа №2

Тема: Управляющие структуры языка Delphi. Условие.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24