![]() |
|
#1
|
|||
|
|||
![]() Как объявить ошибку ввода.
Т.е. например вводя число 20, а переменная от 1 до 10, делфи выбьет ошибку, но мне надо ее убрать и вывести MessageDlg('Ошбка ввода данных. проверьте корректность параметров', mtInformation, [mbOk], 0) , как зафиксировать и перехватить ошибку? Эдитов для считывания у меня много, мне надо как-то все сразу обработать и ловить ошибки любые которые может сделать пользователь.. Мне надо что-то типа того, если после нажатия кнопки в ее процедуре произошла ошибка ввода какая-то, тогда вывести что произошла ошибка ввода.. |
#2
|
||||
|
||||
![]() Код:
try //действия except //сообщение об ошибке end; |
#3
|
|||
|
|||
![]() Я чет никак не пойму эти ошибки, сделал вот так(код ниже). Включил в обработчике 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
|
|||
|
|||
![]() Да у тебя там полный бардак.
Тебе проще сделать свою функцию конвертирования заместо 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
|
||||
|
||||
![]() Я так понял тебе просто надо вывести твое сообшение. Мне кажется лутче будет так:
Событие по вводу символа в едит: PHP код:
Конструкция try except тут используется для вывода сообщения если было введен символ место цыфри Не твори зла, и жизнь повернется к тебе передом ![]() |
#6
|
|||
|
|||
![]() спасибо за помощь
![]() |
#7
|
|||
|
|||
![]() еще хотел бы узнать как ограничить тип real, имеется в виду как по другому задать этот тип
Код:
type T10 = 0..10; Код:
ppv0:=strtofloat(edit1.text); потому что логично что при таком переводе выдает:Incompatible types: 'T10' and 'Extended' т.е. весь диапазаон чисел от 0 до 10, включая 5,1 , 0,2 и т.д. Последний раз редактировалось mantikora, 19.05.2010 в 20:59. |
#8
|
|||
|
|||
![]() никто не знает или слишком глупый вопрос?
![]() |