Q&A

  • edit창에서 나갈때 오류를 검사하는데요......?
edit창에서 나가면서 오류를 검사하려합니다.

조건) 입력은 꼭 있어야 하며 영문1자리로 입력해야합니다.



그래서 제가



procedure TForm1.Edit4Exit(Sender: TObject);

begin



if edit4.text='' then

begin

showmessage('요일코드를 입력해주세요');

edit4.text:='';

edit4.setfocus;

exit;

end;



if length(edit4.text)>=2 then

begin

showmessage('영문1자리로 입력해주세용');

edit4.text:='';

edit4.setfocus;

exit;

end;

end;



이렇게 했습니다. 그런데 문제점이 2개나 발생했습니다.



1) 입력을 하지 않고 넘어가 봤더니 글쎄 에러메시지가 뜨면

프로그램이 다운되버립니다. edit4.text='' 조건은 성립되지 않나요?

에러메시지

Project Project1.exe raised exception class EConvertError with message

'''is not a valid integer value'. Process stopped. Use Step or Run to continue.



2) 정수 1자리를 넣어도 메시지가 뜨지 않습니다. 영문인지 아닌지 어떻게 검사합니까?

또, 정수인지 아닌지는 어떻게 검사하나요?



델고수님들의 도움을 부탁드립니다...

꾸벅꾸벅...^.^

1  COMMENTS
  • Profile
    없음 2000.08.09 11:49
    음.



    ''은 정수가 아니죠? 그런데 왜 이 메세지가 거기서 떳는지 모르겠군요.



    그리고 두 번째는 6이라고 넣어도 그것이 만약 문자형이라면 길이는 1이니까 문제가



    생기죠.



    그럴 땐, 우선 공백을 넣었을 경우나, 아예 입력을 하지 않았을 경우를 대비해서



    Edit의 OnExit에서



    if Trim(edit4.text)='' then edit4.SetFocus;



    해 주시고,



    Edit의 KeyPress에서



    if (key<#65) or ((key>#90) and (key<#97)) or (key>#122) then edit4.text='';





    설명을 드리자면, trim함수는 공백은 다 없애줍니다. 그리고 밑의 것은 각각의 ascii



    코드값으로 영어인지를 판단하는 것입니다. 영어의 ascii 값은 대소문자가 각각



    65~90, 97~122이거든요.



    그리고 만약 정수인지 알고 싶으시다면, 그것도 아스키코드를 갖고 하시면 될 겁니다.