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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 18:05   #1
Darth_Programmeder
 
Регистрация: 10.12.2009
Сообщений: 5
По умолчанию Проверка ввода

Уважаемые программисты!!! помогите пожалуйста вот с такой ерундой. Второй день уже голову ломаю. Я делаю проверку с помощью TRY. Разрешено вводить только цифры из диапазона от 2..30. на все остольное должен выдавать окошко с описанием ошибки. вот что я написал:
begin

//Блок проверки ввода
if (a<2)or(a>30) then begin
showmessage('Ошибка ввода, посмотрите ещё раз, всё ли правильно!');
try
result:=a;
except
a:=strtoint(edit1.text);
end;
exit;
end;
Здесь он просто на все что введешь ошибку выдает. Заранее спасибо
Darth_Programmeder вне форума Ответить с цитированием
Старый 13.04.2010, 18:14   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Если ввод целочисленный, то лучше записать так
Код:
if not (a in [2..30]) then //ошибка ввода
Если ты проверяешь ошибку ввода с помощью конструкции if then, то зачем тебе тогда try except end???
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 13.04.2010 в 18:17.
Grag вне форума Ответить с цитированием
Старый 13.04.2010, 18:49   #3
Darth_Programmeder
 
Регистрация: 10.12.2009
Сообщений: 5
По умолчанию

Мне нужно это реализовать именно с помощью try.
кстати не помогло. распишете более подробно. если это возможно
Darth_Programmeder вне форума Ответить с цитированием
Старый 14.04.2010, 08:24   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Ну если по простому то можно так попробовать
Код:
function InputA(a:integer):integer;
 begin
  if not (a in [2..30]) then
  begin
   result:=2;
   raise ERangeError.Create('Число выходит за пределы диапазона');
  end else result:=a;
 end;
пример использования

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 try
  edit1.Text:=inttostr(InputA(40));
 except
  edit1.Text:='';
 end;
end;
SERG1980 вне форума Ответить с цитированием
Старый 14.04.2010, 15:02   #5
Darth_Programmeder
 
Регистрация: 10.12.2009
Сообщений: 5
По умолчанию

SERG1980 И это тоже не работает. Программа зацикливается. Т.е виснет и рисует на форме точки до бесконечности.

вот что я написал.
begin
a:=strtoint(edit1.text);
//Блок проверки ввода
if (a<2)or(a>30) then begin
try
result:=a;
showmessage('Ошибка ввода, посмотрите ещё раз, всё ли правильно!');
except
end;
exit;
end;
Здесь он выдает как положено ошибки если введешь меньше 2 или больше 30. Но не выводит если введешь что нибудь кроме цифр(Появляется ошибка проекта " " is not valid integer value )
Darth_Programmeder вне форума Ответить с цитированием
Старый 14.04.2010, 15:47   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Дык у вас блок
except
....
end
пустой. вы в него что нибудь впишите. к примеру если в эдите будет не число то выводите сообщение
SERG1980 вне форума Ответить с цитированием
Старый 14.04.2010, 16:19   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Код:
begin
a:=strtoint(edit1.text);
//Блок проверки ввода
try
  result:=a;
except
  showmessage('Ошибка ввода, посмотрите ещё раз, всё ли правильно!');
  exit
end;
result определи как result:[2..30]
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ввода Paul_AG Общие вопросы C/C++ 16 11.06.2009 16:56
Проверка правильности ввода. Whiplash Паскаль, Turbo Pascal, PascalABC.NET 6 14.11.2008 18:00
Проверка ввода Panda Помощь студентам 2 08.07.2008 19:23
проверка ввода данных в форму @Simpson JavaScript, Ajax 1 12.11.2007 02:17
Проверка ввода символов Raz0r Помощь студентам 2 06.11.2007 14:16