Для того чтобы

Для того чтобы
запретить пользователю вводить определённый тип информации в
текстовое поле, не обязательно использовать компонент lang=en-us>MaskEdit (страница lang=en-us>Additional). Можно просто ввести обработку
исключительных ситуаций.

Я приведу пример
фрагмента программы, ниже будет дано подробное оп lang=en-us>исание данного фрагмента.

align=left> face="Courier New"
color=#003399>try

align=left> face="Courier New" color=#003399> A := StrToInt
(Input.Text);

align=left> face="Courier New"
color=#003399>except

align=left> lang=en-us> ShowMessage ('Ошибка ввода целого
числа!!!');

align=left> face="Courier New" color=#003399>
Input.SelectAll;

align=left> face="Courier New" color=#003399>
Exit;

align=left> face="Courier New"
color=#003399>end;

align=center>

align=justify>В данном фрагменте
программы с помощью зарезервированных слов size=2> face="Courier New">try,
except face=Arial> и lang=en-us>end face=Arial> реализуется так
называемый защищённый блок. Такими блоками программист может
защитить программу от краха от ошибки.

align=center>

align=justify>После слова size=2> face="Courier New">try
ставится выражение, которое необходимо выполнить в программе.
В данном случае программа пробует с помощью функции
face="Courier New">StrToInt
преобразовать строковое
значение из текстового поля с именем face="Courier New" size=2>Input
в целое значение.

align=justify>

align=justify>Защита действует
следующим образом:

align=justify>Если при выполнении
операторов, расположенных после слова face="Courier New" size=2> lang=en-us>try, была
обнаружена ошибка, то выполняются операторы, расположены после
слова lang=en-us>except. Если
ошибка не обнаружена, то выполняются операторы, следующие
после слова lang=en-us>end. В данном
случае с помощью функции face="Courier New">ShowMessage
программа выводит сообщение с
указанным текстом, после чего программа выделяет содержимое
текстового поля и предлагает ввести ошибочное значение
заново.

align=justify>Ошибочным значением
может быть: строковое значение, дробное значение или вообще не
введённое значение.

align=justify>
Другой вариант обработки
исключительных ситуаций:

face="Courier New" size=4>

align=justify> lang=en-us>try

align=justify> lang=en-us> 1>

align=justify> lang=en-us>finally

align=justify> lang=en-us> >

align=justify> lang=en-us>end;

align=justify>В данном случае lang=en-us>
выполнится в любом случае, но при ошибке в lang=en-us>
управление будет передано
>.

align=justify>Конструкцию size=2> face="Courier New">finally...end
удобно использовать, например,
при загрузке из файла изображения в face="Courier New" size=2> lang=en-us>TBitMap size=2>.

align=justify>Например:

face="Courier New" size=4>

align=justify> lang=en-us>procedure TForm1.Button1Click(Sender:
TObject);

align=justify> lang=en-us>var

align=justify> lang=en-us> bitmap: TBitMap;

align=justify> lang=en-us>begin

align=justify> lang=en-us> bitmap :=
TBitMap.Create;

align=justify> lang=en-us> try

align=justify> lang=en-us>
bitmap.LoadFromFile('bitmap.bmp');

align=justify> lang=en-us>
Canvas.Draw(bitmap);

align=justify> lang=en-us> finally

align=justify> lang=en-us>
bitmap.Free;

align=justify> lang=en-us> end;

align=justify> lang=en-us>end;

align=justify>

align=justify>Вначале lang=en-us>bitmap инициируется с помощью конструктора
Create. Затем в теле программы lang=en-us>в bitmap загружается
изображение из файла. Даже при возникновении ошибки необходимо
вызвать деструктор класса с помощью метода lang=en-us>Free. Поэтому для этого используется
конструкция face="Courier New"> lang=en-us>finally...end face=Arial>.

align=justify>Иногда
программе необходимо самостоятельно вызвать исключение. Для
этого используется зарезервированное слово size=2>raise face=Arial>.

align=justify>Вообще, для обработки
исключительных ситуаций используется класс lang=en-us>TException, а также его многочисленные
потомки.

align=justify>Инициировать исключение можно
так:

align=justify> lang=en-us>try

align=justify> lang=en-us> x := StrToInt(st);

align=justify> lang=en-us> if x < 0 then raise
EAbort.Create('Число меньше нуля! lang=en-us>');

align=justify> lang=en-us>except

align=justify> lang=en-us> ShowMessage('Ошибка!!! lang=en-us>');

align=justify> lang=en-us>end;

size=4>

align=justify>В этом случае при ошибке
преобразования строки в число появится сообщение об ошибке, а
также при отрицательном числе программа вызывает собственное
исключение, при этом также появится сообщение об
ошибке.

align=justify>Подробную информацию об исключениях
вы можете получить в справке Delphi, а
также я могу проконсультировать вас, если вы отправите мне
письмо по адресу lang=en-us>grenkin@mail.ru

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: