Q&A

  • 계산에서요 문자를 넣었을때 오류발생메세지 보이게 하는건 어떻게 하나요
var
a,b,c,d,e,f:real;

begin



a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
d:=strtofloat(edit4.text);
e:=strtofloat(edit5.text);

if c=a then
begin
showmessage('숫자입력이 잘못됐습니다.')
end

else
begin
f:=(d-b)/(c-a)*e+b-(d-b)/(c-a)*a;
edit6.text:=floattostr(f)
end









end;

end.



여기까지 했거든요..
4  COMMENTS
  • Profile
    이중철 2004.07.16 01:08
    이유는 아래의 답변상의 로직으로는
    123.232.2334.2342 이런것은 걸러내지 못합니다.
    그리고 아예 입력 안한상태도 있고요

    그리고 검증은  Try except 으로 해도 괜찮으나
    전 VAL 함수를 추천합니다.
    Try except 하면 디버그 상태에서는 에러로 나오니 짜증나서 ^^

  • Profile
    ㉳㉥ㅗ㉣ㅐ㉧ㅛ 2004.07.15 02:22



    strToFloat 함수를 사용할때 Try...Except....end를 사용하면 되구요...

    차라리 키를 입력할때 문자가 입력되지 않게 하면 어떨지...
  • Profile
    이건주 2004.07.15 03:11

    다른 방법까지 좀 더 구체적으로 알려 주시면 안되나요...
    이거 써도 안되던데..
    // 숫수 0~9까지, Backspace가 아니면 키 입력없는 걸로 설정
       if not ( Key in [ '0'..'9', #8] ) then // 입력가능한 문자나 값을 넣으면 됨
             Key := #0;

  • Profile
    ㉳㉥ㅗ㉣ㅐ㉧ㅛ 2004.07.15 17:58
    대략으로 올려놓은 것은 찾아보시라고 그리 한것인데요...

    procedure TfrmBill.grdDataKeyPress(Sender: TObject; var Key: Char);
    begin
       if key in [#13, #9 ] then begin
             ......
       end else if key = #27 then begin
          .,,,,,,
       end else if not ( key in [#48..#57] ) then begin
          ......
       end;
    end;