Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-5-8-11...doc
Скачиваний:
5
Добавлен:
21.04.2019
Размер:
122.88 Кб
Скачать

Вопрос 20 Способы ввода-вывода данных. Диалоговые окна сообщений.

Текстовое поле ввода (TEdit) - простой и в то же время удобный элемент для ввода данных. В поле мы можем ввести и число и текст - никаких ограничений нет. Итак, наша первая задача - узнать, что введено в поле. Для этого мы должны обратиться к свойствам этого объекта. За текст, находящийся в поле, отвечает свойство Text. Именно им мы и воспользуемся. Попробуем считать число, которое будет введено... Расположим на форме само поле (TEdit) и кнопку (TButton). Создадим обработчик нажатия кнопки и сделаем следующее: объявим переменную целочисленного типа, а затем попробуем поместить в неё значение, которое введено в поле.

procedure TForm1.Button1Click(Sender: TObject);

var A: Integer;

begin

A:=Edit1.Text;

end;

Прежде чем делать вывод, давайте произведём с введённым числом какие-нибудь операции. К примеру, давайте возведём число в квадрат. Как это делается, вы уже знаете. Вывод осуществим в текстовую метку (TLabel). За текст метки отвечает свойство Caption. В данном случае наши действия должны быть обратными: при вводе мы заносили в переменную введённое в поле значение, а при выводе мы должны значение из переменной перенести в элемент. Caption у TLabel описывается тоже типом данных TCaption, т.е. это текст. А значит мы должны сделать обратное преобразование, т.е. преобразовать число в текстовую строку. Как называется функция для такого перевода, легко догадаться - IntToStr(). Финальный вариант обработчика кнопки:

procedure TForm1.Button1Click(Sender: TObject);

var A: Integer;

begin

A:=StrToInt(Edit1.Text);

A:=Sqr(A);

Label1.Caption:=IntToStr(A)

end;

Самое примитивное окно содержит указанный текст и кнопку OK для закрытия окна. Вызвать такое окно можно процедурой ShowMessage(), параметром которой является текст - он и будет отображён в окне. Модифицируем нашу мини-программу, убрав TLabel и заменив строку вывода:

procedure TForm1.Button1Click(Sender: TObject);

var A: Integer;

begin

A:=StrToInt(Edit1.Text);

A:=Sqr(A);

ShowMessage(IntToStr(A));

end;

Вопрос 23 Защищенный блок try..Finally.

Блок try...finally позволяет защитить код, записанный в finally разделе, от исключений, которые в силу различных ошибок могут генерироваться операторами в разделе try. Операторы раздела finally будут выполняться независимо от того, было или не было сгенерировано исключение при выполнении операторов раздела try. Если где-то в разделе try произошла ошибка и сгенерировано исключение, то выполнение блока try прерывается и управление немедленно передается разделу finally. Даже если при выполнении операторов раздела finally случилась ошибка, операторы этого раздела все-таки выполняются до конца.

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

В блок try...finally не включаются обработки исключений. При выполнении операторов раздела finally неизвестно, было или не было сгенерировано исключение (такие средства проверки, как функция ExceptAddr, этого не показывают). Для обработки исключений используются блоки try...except, которые никак не связаны с блоками try...finally. Впрочем, эти виды блоков могут использоваться совместно. Например:

try {начало блока try...except}

................

try {начало блока try...finally}

................

finally

................

end; {конец блока try...finally}

except

................

end; {конец блока try...except}