Для того чтобы
запретить пользователю вводить определённый тип информации в
текстовое поле, не обязательно использовать компонент
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> <выражение
lang=en-us>1>
align=justify>
lang=en-us>finally
align=justify>
lang=en-us> <выражение2
lang=en-us>>
align=justify>
lang=en-us>end;
align=justify>В данном случае
lang=en-us><выражение2> выполнится в любом случае, но при ошибке в
lang=en-us><выражении2> управление будет передано
<выражению2
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>Вначале
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
Опубликовал Kest
October 25 2008 14:11:39 ·
0 Комментариев ·
8775 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.