Q&A

  • 에디트에서 받은 값의 숫자 확인
에디트 박스에서 받은 값이 숫자인지 문자인지 확인할 방법이 없나요

지금은 예외처리로 쓰고 있는데 왠지 다른 방법이 있을것 같네요

만약 사용자가 숫자를 넣어야 할 에디트 박스에

321ㄹㄴㅇ <----- 이런식으로 값을 넣었을 경우 숫자가 아니니 다시 입력하세요

라고 처리 하고 싶거든요 지금까지는 예외처리로 했는데 다른 방법(예약 함수)이 없을 까요 고수님들?

3  COMMENTS
  • Profile
    뿌요 2001.02.09 19:36
    1. edit의 imeMode속성을 imSAlpha로 하고 MaxLength에다 값을 정해준다

    2. keypress event

    procedure Form1.edit1Keypress(Sender: TObject; var Key: Char);

    begin

    //숫자만 입력되게

    if not (Key in [#8,'0'..'9']) then Key := #0;

    end;





    pallas wrote:

    > 에디트 박스에서 받은 값이 숫자인지 문자인지 확인할 방법이 없나요

    > 지금은 예외처리로 쓰고 있는데 왠지 다른 방법이 있을것 같네요

    > 만약 사용자가 숫자를 넣어야 할 에디트 박스에

    > 321ㄹㄴㅇ <----- 이런식으로 값을 넣었을 경우 숫자가 아니니 다시 입력하세요

    > 라고 처리 하고 싶거든요 지금까지는 예외처리로 했는데 다른 방법(예약 함수)이 없을 까요 고수님들?

  • Profile
    여영식 2001.02.09 19:27
    val 함수를 써보세요.



    pallas wrote:

    > 에디트 박스에서 받은 값이 숫자인지 문자인지 확인할 방법이 없나요

    > 지금은 예외처리로 쓰고 있는데 왠지 다른 방법이 있을것 같네요

    > 만약 사용자가 숫자를 넣어야 할 에디트 박스에

    > 321ㄹㄴㅇ <----- 이런식으로 값을 넣었을 경우 숫자가 아니니 다시 입력하세요

    > 라고 처리 하고 싶거든요 지금까지는 예외처리로 했는데 다른 방법(예약 함수)이 없을 까요 고수님들?

  • Profile
    Larson 2001.02.09 19:14
    제일 쉬운 방법은 숫자에디트 컴포넌트를 사용하시면 됩니다.



    음... 숫자에디트를 사용하기 싫으면 몇가지 다른 방법도 있습니다.



    procedure keypress;

    begin

    if not (char(key) in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']) then

    showmessage('숫자만 입력하세요.');

    end;



    혹은



    Procedure TForm1.Button1Click(Sender: TObject);

    Var

    aaa: String;

    i: integer;

    Begin

    aaa := edit1.text;

    For i := 1 To length(aaa) Do Begin

    If Not (aaa[i] In ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']) Then Begin

    showmessage('숫자만 입력하세요.');

    exit;

    End;

    End;

    End;



    기타 많은 방법이 있습니다.