Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.05.2010, 23:01
mantikora mantikora вне форума
Прохожий
 
Регистрация: 08.05.2010
Сообщения: 6
Репутация: 10
По умолчанию Обработка ошибок

Как объявить ошибку ввода.
Т.е. например вводя число 20, а переменная от 1 до 10, делфи выбьет ошибку, но мне надо ее убрать и вывести MessageDlg('Ошбка ввода данных. проверьте корректность параметров', mtInformation, [mbOk], 0) , как зафиксировать и перехватить ошибку?
Эдитов для считывания у меня много, мне надо как-то все сразу обработать и ловить ошибки любые которые может сделать пользователь..
Мне надо что-то типа того, если после нажатия кнопки в ее процедуре произошла ошибка ввода какая-то, тогда вывести что произошла ошибка ввода..
Ответить с цитированием
  #2  
Старый 09.05.2010, 00:24
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Код:
try
//действия
except //сообщение об ошибке
end;
Это?
Ответить с цитированием
  #3  
Старый 18.05.2010, 22:42
mantikora mantikora вне форума
Прохожий
 
Регистрация: 08.05.2010
Сообщения: 6
Репутация: 10
По умолчанию

Я чет никак не пойму эти ошибки, сделал вот так(код ниже). Включил в обработчике range checking, то оно работало но при том еще и в других местах ошибки выдавало где не было их, потом вдруг перестало и не там ни там не выдает, уже запутался, сеейчас вот этот код(вырезал кусок потому что прога очень большая) уже не выдает ошибки если я введу в эдитах 11 иди 50 Подскажите пожалуйста в чем дело..

Код:
type
  T10 = 0..10;

.....


procedure TForm1.Button1Click(Sender: TObject);
var   
kc, kv, kq: real;  
c, v, q: real;   //cena, ydobstvo, cena
kv1, kv2, kv3, kv4, kv5, kv6: real;  
kq1, kq2, kq3, kq4, kq5, kq6: real;  

kvv1, kvv2, kvv3, kvv4, kvv5, kvv6: T10;    //dla normirovania
kqq1, kqq2, kqq3, kqq4, kqq5, kqq6: T10;
kvv0, kqq0, kcc0: T10; //dla norm glob koeficientov
kvs, kqs , kcvq:integer;
begin

 Try
kcc0:=strtoint(edit11.text);
kvv0:=strtoint(edit12.text);
kqq0:=strtoint(edit13.text);
kcvq:=kcc0+kvv0+kqq0;

kc:=kcc0/kcvq;
kv:=kvv0/kcvq;
kq:=kqq0/kcvq;

kvv1:=strtoint(edit1.text);
kvv2:=strtoint(edit2.text);
kvv3:=strtoint(edit3.text);
kvv4:=strtoint(edit4.text);
kvv5:=strtoint(edit5.text);
kvv6:=strtoint(edit15.text);


kqq1:=strtoint(edit6.text);
kqq2:=strtoint(edit7.text);
kqq3:=strtoint(edit8.text);
kqq4:=strtoint(edit9.text);
kqq5:=strtoint(edit10.text);
kqq6:=strtoint(edit16.text);

  except
    on E : Exception do
      ShowMessage(E.ClassName+' ошибка, с сообщением : '+E.Message);
  end;

........
Ответить с цитированием
  #4  
Старый 19.05.2010, 00:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,098
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да у тебя там полный бардак.
Тебе проще сделать свою функцию конвертирования заместо StrToInt:

Код:
function StrtoIntRange(AString : String; AMin, AMax : Integer) : Integer;
begin
  Result := StrToInt(AString);
  If Result > AMin Then Raise Exception.Create('Value less than min value.');
  If Result > AMax then Raise Exception.Create('Value greater than max value.');
end;

А ловить эти ошибки именно в Try..Except
Ответить с цитированием
  #5  
Старый 19.05.2010, 10:07
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

Я так понял тебе просто надо вывести твое сообшение. Мне кажется лутче будет так:
Событие по вводу символа в едит:
PHP код:
procedure TForm1.Edit1KeyPress(SenderTObject; var KeyChar);
var
 
i:integer;
begin
try
i:=StrToInt(Edit1.Text);
if 
i>10 then
 begin
  MessageDlg
('Ошбка ввода данных. проверьте корректность параметров'mtInformation, [mbOk], 0);
  
Edit1.Text:=10;//это не обязательно
 
end;
except
 MessageDlg
('Введены заприщенные символы!'mtInformation, [mbOk], 0);
  
Edit1.Text:=0;//это не обязательно
end;
end

Конструкция try except тут используется для вывода сообщения если было введен символ место цыфри
__________________
Не твори зла, и жизнь повернется к тебе передом
Ответить с цитированием
  #6  
Старый 19.05.2010, 19:52
mantikora mantikora вне форума
Прохожий
 
Регистрация: 08.05.2010
Сообщения: 6
Репутация: 10
По умолчанию

спасибо за помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025