Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2008, 12:50   #1
xxxPascalxxx
Life:[### ]22%
Пользователь
 
Аватар для xxxPascalxxx
 
Регистрация: 15.12.2007
Сообщений: 48
По умолчанию Обработчик исключений Delphi

Здравствуй форум, прошу помочь.
Как сделать так, что бы если в Edit будет введена буква или число не принадлежащее диапазону от 1 до 100000 то при нажатии на кнопку выдавалось сообщение об ошибке и Edit стал пуст? Я попытался сделать, но не получилось... Погоите пожалуйста, заранее спасибо.
Вот мой код по нажатию на кнопку:

Код:
procedure TForm1.FormirClick(Sender: TObject);
 var   i,k:integer;  s:array [1..100000] of integer;
begin
   randomize;
   try
n:=StrToInt(E1.text);    {Размерность массива}
for i:=1 to 100000  do
  if n=s[i] then
    k:=1;

if k<>1 then Raise
   EInOutError.Create('Введите число в диапазоне от 1 до 100000');
   Except
    on EInOutError do begin
    E1.text:=''; end;  end;

 Massiv.Lines.Clear;      {Очищаем memo}
for i:=1 to n do
a[i]:=random(10*n+1);      {Формируем рандомный массив размерностью n*10}
Showmessage('Массив сформирован');
end;
My Life v1.0b ERROR: health.dll not found
xxxPascalxxx вне форума Ответить с цитированием
Старый 29.11.2008, 13:12   #2
Mitriy08
Пользователь
 
Регистрация: 11.07.2008
Сообщений: 91
По умолчанию

Ну для начала можно сделать так, чтобы в Edit нельзя было вводить буквы.
Это можно сделать с помощью использования сторонних компанентов либо
На событие OnKeyPress:
Код:
    if not ( Key in ['0'..'9'] ) then Key := #0 ;
Дальше просто проверяем диапазон вхождения числа и все...
Mitriy08 вне форума Ответить с цитированием
Старый 29.11.2008, 13:37   #3
xxxPascalxxx
Life:[### ]22%
Пользователь
 
Аватар для xxxPascalxxx
 
Регистрация: 15.12.2007
Сообщений: 48
По умолчанию

Большое спасибо.
My Life v1.0b ERROR: health.dll not found
xxxPascalxxx вне форума Ответить с цитированием
Старый 29.11.2008, 13:51   #4
xxxPascalxxx
Life:[### ]22%
Пользователь
 
Аватар для xxxPascalxxx
 
Регистрация: 15.12.2007
Сообщений: 48
По умолчанию

Хмм, а если я захочу изменить размерность, нельзя стирать цифры в Edit. И как диапазон вхождения проверить, я сравнивал число n с элементами массива от 1 до 100000 где все они расположены по возрастанию, сравнивать с множеством не получилось, выдавал ошибку что множество состоит больше чем из 256 элементов... С массивом выдаёт ошибку во время выполнения программы. Скрин ошибки прикрепил.
Вложения
Тип файла: rar Скрин.rar (19.6 Кб, 9 просмотров)
My Life v1.0b ERROR: health.dll not found
xxxPascalxxx вне форума Ответить с цитированием
Старый 30.11.2008, 00:21   #5
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от xxxPascalxxx Посмотреть сообщение
Код:
for i:=1 to 100000  do
  if n=s[i] then
    k:=1;
Ужс
if (n<1) or (n>100000) then raise .....;
Цитата:
Код:
   Except
    on EInOutError do begin
[/CODE]
Ещё надо обрабатывать EConvertError, который может создать StrToInt.
Цитата:
Сообщение от Mitriy08 Посмотреть сообщение
На событие OnKeyPress:
Код:
    if not ( Key in ['0'..'9'] ) then Key := #0 ;
Копировать-вставить, и в Edit'е будет всё что угодно. Тогда не мешало бы ещё вставку из буфера ловить.
Somebody вне форума Ответить с цитированием
Старый 30.11.2008, 06:37   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

угу и разрешить в OnKeyPress не только цифры но и хотябы бэкспейс и делит
vovk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка исключений ввода в TMaskedEdit joker Общие вопросы Delphi 8 11.06.2008 15:02
обработчик событий ben95 Помощь студентам 5 28.01.2008 17:46
обновление в блоге - Обработка исключений в Delphi Pblog Обсуждение статей 0 11.09.2007 18:40