Q&A

  • 예외
-------------------------------------------------------------------



!(9999)000-0000;1;_ // (____)___-____



try

label1.caption:=maskedit1.text;

except on EDBEditError do

messagedlg('공백에러',mtwarning, [mbok],0);

end;



<입력시> (____)_77-7777

-> 0,9는 숫자입력, 0은 선택, 9는 필수입력.

그런데, 위 입력시 공백을 넣었습니다.

에러메세지는 다음과 같습니다.



//exception: EDBEditError

Invalid input value. Use escape key to abandon changes.



-> 위에 분명히 예외처리를 해주었으니, '공백에러'라는 메세지를

내어야 하는데, 위와 같은 에러메세지가 뜹니다. 이것은

(except on ~ do)에서 예외처리가 되지 않았다는 뜻이구요.



제가 원하는건 에러방지가 아니라, '예외처리'입니다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



===================================================================



try

edit1.text:=IntToSTr(StrToInt(edit2.text)/IntToStr(edit3.text));

except on EZeroDivideError do

messagedlg('0으로 나눌수 없습니다.',mtwarning, [mbok],0);

end;



이 경우에서는, 4/0하면, EZeroDivideError예외가 일어나고,

'0으로 나눌수 없습니다'라고 에러메세지를 내어주거든요.



===================================================================



EDBEditError의 properties







Message contains the text string to display in the exception dialog

box when the exception is raised.



[property Message: string]



-> Message를 어떻게 사용하는지 아시면 간단한 예를 부탁드리겠습니다.

4  COMMENTS
  • Profile
    알면다쵸요! 2000.03.23 06:27
    임형호님, 그리고, 류님.. 모두 답변 감사합니다.

    류님은 신해~에서 일하시나봐요? 그럼, 임프님과 아시는 사이가 되시낭?

    여튼, 한델개에선 첨 뵙네요~ 코코

    두분 모두 즐거운 시간되세여~

  • Profile
    류종택 2000.03.23 01:40
    > try

    > label1.caption:=maskedit1.text;

    > except on EDBEditError do

    > messagedlg('공백에러',mtwarning, [mbok],0);

    > end;



    이부분에서는 에러가 날 곳이 없습니다..

    반복되지만..

    다만 에러발생은.. 콤포넌트 자체에서 생성하는 것 입니다..

    그부분을 막아줘야 하는데..

    왜 그랬는지..

    막을 수는 없습니다..

    (아니면 제가 모르는 다른 방법이 있던지..)

    전에도 똑같은 질문이 있어서..

    콤포넌트의 소스를 고치는 것으로 해결한 적이 있으니..

    아래 참고로 올리겠습니다..

    DBEdit 콤포넌트의 소스 중에서 다음을 찾아서..

    아래처럼 고치신 후..

    콤포넌트의 OnExit 이벤트에서 에러 처리를 해주세요..





    From 류..



    ---------



    procedure TDBEdit.CMExit(var Message: TCMExit);

    begin

    // 옮겨진 위치

    DoExit;

    try

    FDataLink.UpdateRecord;

    except

    SelectAll;

    SetFocus;

    raise;

    end;

    SetFocused(False);

    CheckCursor;

    // 원래의 위치

    // DoExit;

    end;





    알면다쵸요! wrote:

    > -------------------------------------------------------------------

    >

    > !(9999)000-0000;1;_ // (____)___-____

    >

    > try

    > label1.caption:=maskedit1.text;

    > except on EDBEditError do

    > messagedlg('공백에러',mtwarning, [mbok],0);

    > end;

    >

    > <입력시> (____)_77-7777

    > -> 0,9는 숫자입력, 0은 선택, 9는 필수입력.

    > 그런데, 위 입력시 공백을 넣었습니다.

    > 에러메세지는 다음과 같습니다.

    >

    > //exception: EDBEditError

    > Invalid input value. Use escape key to abandon changes.

    >

    > -> 위에 분명히 예외처리를 해주었으니, '공백에러'라는 메세지를

    > 내어야 하는데, 위와 같은 에러메세지가 뜹니다. 이것은

    > (except on ~ do)에서 예외처리가 되지 않았다는 뜻이구요.

    >

    > 제가 원하는건 에러방지가 아니라, '예외처리'입니다.

    > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    >

    > ===================================================================

    >

    > try

    > edit1.text:=IntToSTr(StrToInt(edit2.text)/IntToStr(edit3.text));

    > except on EZeroDivideError do

    > messagedlg('0으로 나눌수 없습니다.',mtwarning, [mbok],0);

    > end;

    >

    > 이 경우에서는, 4/0하면, EZeroDivideError예외가 일어나고,

    > '0으로 나눌수 없습니다'라고 에러메세지를 내어주거든요.

    >

    > ===================================================================

    >

    > EDBEditError의 properties

    >

    >

    >

    > Message contains the text string to display in the exception dialog

    > box when the exception is raised.

    >

    > [property Message: string]

    >

    > -> Message를 어떻게 사용하는지 아시면 간단한 예를 부탁드리겠습니다.

  • Profile
    임형호 2000.03.23 02:57
    류종택 wrote:

    > > try

    > > label1.caption:=maskedit1.text;

    > > except on EDBEditError do

    > > messagedlg('공백에러',mtwarning, [mbok],0);

    > > end;

    >

    > 이부분에서는 에러가 날 곳이 없습니다..

    > 반복되지만..

    > 다만 에러발생은.. 콤포넌트 자체에서 생성하는 것 입니다..

    > 그부분을 막아줘야 하는데..

    > 왜 그랬는지..

    > 막을 수는 없습니다..

    > (아니면 제가 모르는 다른 방법이 있던지..)

    > 전에도 똑같은 질문이 있어서..

    > 콤포넌트의 소스를 고치는 것으로 해결한 적이 있으니..

    > 아래 참고로 올리겠습니다..

    > DBEdit 콤포넌트의 소스 중에서 다음을 찾아서..

    > 아래처럼 고치신 후..

    > 콤포넌트의 OnExit 이벤트에서 에러 처리를 해주세요..

    >

    >

    > From 류..

    >

    > ---------

    >

    > procedure TDBEdit.CMExit(var Message: TCMExit);

    > begin

    > // 옮겨진 위치

    > DoExit;

    > try

    > FDataLink.UpdateRecord;

    > except

    > SelectAll;

    > SetFocus;

    > raise;

    > end;

    > SetFocused(False);

    > CheckCursor;

    > // 원래의 위치

    > // DoExit;

    > end;

    >

    >

    > 알면다쵸요! wrote:

    > > -------------------------------------------------------------------

    > >

    > > !(9999)000-0000;1;_ // (____)___-____

    > >

    > > try

    > > label1.caption:=maskedit1.text;

    > > except on EDBEditError do

    > > messagedlg('공백에러',mtwarning, [mbok],0);

    > > end;

    > >

    > > <입력시> (____)_77-7777

    > > -> 0,9는 숫자입력, 0은 선택, 9는 필수입력.

    > > 그런데, 위 입력시 공백을 넣었습니다.

    > > 에러메세지는 다음과 같습니다.

    > >

    > > //exception: EDBEditError

    > > Invalid input value. Use escape key to abandon changes.

    > >

    > > -> 위에 분명히 예외처리를 해주었으니, '공백에러'라는 메세지를

    > > 내어야 하는데, 위와 같은 에러메세지가 뜹니다. 이것은

    > > (except on ~ do)에서 예외처리가 되지 않았다는 뜻이구요.

    > >

    > > 제가 원하는건 에러방지가 아니라, '예외처리'입니다.

    > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    > >

    > > ===================================================================

    > >

    > > try

    > > edit1.text:=IntToSTr(StrToInt(edit2.text)/IntToStr(edit3.text));

    > > except on EZeroDivideError do

    > > messagedlg('0으로 나눌수 없습니다.',mtwarning, [mbok],0);

    > > end;

    > >

    > > 이 경우에서는, 4/0하면, EZeroDivideError예외가 일어나고,

    > > '0으로 나눌수 없습니다'라고 에러메세지를 내어주거든요.

    > >

    > > ===================================================================

    > >

    > > EDBEditError의 properties

    > >

    > >

    > >

    > > Message contains the text string to display in the exception dialog

    > > box when the exception is raised.

    > >

    > > [property Message: string]

    > >

    > > -> Message를 어떻게 사용하는지 아시면 간단한 예를 부탁드리겠습니다.



    > 혹시 델파이로 작업한것을 바로 실행시켜서 테스트를 하시지는 않았나 모르겠네요.

    델파이를 닫고 실행파일로 테스트를 해보세요.

    그러면 except문 다음에 기입한 에러 메세지가 출력이 될겁니다.

  • Profile
    류종택 2000.03.23 04:55
    제글이 좀 애매했나 보네요..

    제 말씀은 해당 코드 부분에서 나는 에러가 아니라..

    콤포넌트 자체에서 처리하면서 나는 에러라는 것 입니다..

    그리고 제가 아는 방법은 콤포넌트 자체를 고치는 것 뿐입니다..

    해당 콤포넌트가 포커스가 사라질 때..

    스스로 포멧을 검사하기 때문에 생기는 에러 입니다..





    From 류..





    임형호 wrote:

    > 류종택 wrote:

    > > > try

    > > > label1.caption:=maskedit1.text;

    > > > except on EDBEditError do

    > > > messagedlg('공백에러',mtwarning, [mbok],0);

    > > > end;

    > >

    > > 이부분에서는 에러가 날 곳이 없습니다..

    > > 반복되지만..

    > > 다만 에러발생은.. 콤포넌트 자체에서 생성하는 것 입니다..

    > > 그부분을 막아줘야 하는데..

    > > 왜 그랬는지..

    > > 막을 수는 없습니다..

    > > (아니면 제가 모르는 다른 방법이 있던지..)

    > > 전에도 똑같은 질문이 있어서..

    > > 콤포넌트의 소스를 고치는 것으로 해결한 적이 있으니..

    > > 아래 참고로 올리겠습니다..

    > > DBEdit 콤포넌트의 소스 중에서 다음을 찾아서..

    > > 아래처럼 고치신 후..

    > > 콤포넌트의 OnExit 이벤트에서 에러 처리를 해주세요..

    > >

    > >

    > > From 류..

    > >

    > > ---------

    > >

    > > procedure TDBEdit.CMExit(var Message: TCMExit);

    > > begin

    > > // 옮겨진 위치

    > > DoExit;

    > > try

    > > FDataLink.UpdateRecord;

    > > except

    > > SelectAll;

    > > SetFocus;

    > > raise;

    > > end;

    > > SetFocused(False);

    > > CheckCursor;

    > > // 원래의 위치

    > > // DoExit;

    > > end;

    > >

    > >

    > > 알면다쵸요! wrote:

    > > > -------------------------------------------------------------------

    > > >

    > > > !(9999)000-0000;1;_ // (____)___-____

    > > >

    > > > try

    > > > label1.caption:=maskedit1.text;

    > > > except on EDBEditError do

    > > > messagedlg('공백에러',mtwarning, [mbok],0);

    > > > end;

    > > >

    > > > <입력시> (____)_77-7777

    > > > -> 0,9는 숫자입력, 0은 선택, 9는 필수입력.

    > > > 그런데, 위 입력시 공백을 넣었습니다.

    > > > 에러메세지는 다음과 같습니다.

    > > >

    > > > //exception: EDBEditError

    > > > Invalid input value. Use escape key to abandon changes.

    > > >

    > > > -> 위에 분명히 예외처리를 해주었으니, '공백에러'라는 메세지를

    > > > 내어야 하는데, 위와 같은 에러메세지가 뜹니다. 이것은

    > > > (except on ~ do)에서 예외처리가 되지 않았다는 뜻이구요.

    > > >

    > > > 제가 원하는건 에러방지가 아니라, '예외처리'입니다.

    > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    > > >

    > > > ===================================================================

    > > >

    > > > try

    > > > edit1.text:=IntToSTr(StrToInt(edit2.text)/IntToStr(edit3.text));

    > > > except on EZeroDivideError do

    > > > messagedlg('0으로 나눌수 없습니다.',mtwarning, [mbok],0);

    > > > end;

    > > >

    > > > 이 경우에서는, 4/0하면, EZeroDivideError예외가 일어나고,

    > > > '0으로 나눌수 없습니다'라고 에러메세지를 내어주거든요.

    > > >

    > > > ===================================================================

    > > >

    > > > EDBEditError의 properties

    > > >

    > > >

    > > >

    > > > Message contains the text string to display in the exception dialog

    > > > box when the exception is raised.

    > > >

    > > > [property Message: string]

    > > >

    > > > -> Message를 어떻게 사용하는지 아시면 간단한 예를 부탁드리겠습니다.

    >

    > > 혹시 델파이로 작업한것을 바로 실행시켜서 테스트를 하시지는 않았나 모르겠네요.

    > 델파이를 닫고 실행파일로 테스트를 해보세요.

    > 그러면 except문 다음에 기입한 에러 메세지가 출력이 될겁니다.

    • 이두용
    • 2000.03.23 06:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 알면다쵸요!
      2000.03.23 06:56
      이두용 wrote: > Select O.NUMBER, O.ADATE, O.CCODE, O.OCODE, > O.ETC, C.CNAME,O.DELIVERY, O.IMAG...
    • 이용현
    • 2000.03.23 05:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.23 08:06
      리스트뷰의 백그라운드에 그림을 넣는 것은 예상외로 간단합니다. 근데 투명효과를 지원하지 않아서 이것...
    • 델초
    • 2000.03.23 04:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2000.03.23 04:56
      If Assigned(Form1) then 생성됨 Else 생성안됨; 과 같습니다.. From 류.. 델초 wrote: > 안...
    • 류종택
      2000.03.23 05:20
      ListBox의 Style 프로퍼티를 lbOwnerDrawFixed로 고치시고.. OnDrawItem이라는 이벤트에서 직접 모든 것을...
    • 이정욱
      2000.03.23 04:16
      ListBox1.ItemIndex := ListBox1.Items.Count - 1; 더해 준 다음 위처럼 해보세염. ^^; 근데 수정님 ...
    • 이수정
      2000.03.23 04:36
      지우고 시퍼여... 파란색 바탕라인은 안나와도 되는데.. T,t StringGrid에서 한 라인을 검색하는건...
    • 임형호
      2000.03.23 05:06
      이수정 wrote: > > 지우고 시퍼여... > > 파란색 바탕라인은 안나와도 되는데.. T,t > > StringGr...
    • 이정욱
      2000.03.23 04:17
      켁... 이거 하고 나니깐 밑에 답변이 되어있네염? 그래도 이건 안지울께염~ 쩝.. 이정욱 wrote: > L...
    • 임형호
      2000.03.23 04:13
      이수정 wrote: > Listbox에서 item 이 add 될수록.. > > 스크롤바만 생기고, 제일 처음 줄을 항상 가...
    • blueSky
    • 2000.03.23 03:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 알면다쵸요!
      2000.03.23 06:42
      10096, 10116, 10120번 참고하세요
    • blueSky
      2000.03.23 18:59
      알면다쵸요! wrote: > 10096, 10116, 10120번 참고하세요 답변 감사합니다. 하지만.. 위의 내용은여 ...
    • door21
    • 2000.03.23 02:48
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 정윤호
      2000.03.23 18:04
      > var > xCode : integer; > hsem : THandle; > semNm: array[0..256] of Char; > begin > ...
    • door21
      2000.03.23 21:51
      정윤호 wrote: > > var > > xCode : integer; > > hsem : THandle; > > semNm: array[0..256]...
    • 최석기
      2000.03.23 05:03
      door21 wrote: > 엑셀을 OLE로 불러와서 작업하고 종료시켰는데, > 어플리케이션만 죽고, 프로세스가 안...
    • door21
      2000.03.23 21:53
      최석기 wrote: > door21 wrote: > > 엑셀을 OLE로 불러와서 작업하고 종료시켰는데, > > 어플리케이션만...
    • 4ME
      2000.03.23 03:04
      신승욱 wrote: > 안녕하십니까......여러 고수님들.... > 다른게 아니라 델파이 3.0에서 작업할때 edit박...
    • 이병수
      2000.03.23 02:57
      아래에 같은 질문과 답변이 있군요.. 4156번 이던가??? 찾아보시면 도움이 됩니다... 참고로.. 마우스 ...
    • xEEEn
    • 2000.03.23 02:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2000.03.23 02:07
      아래 소스를 참고 하세요.. From 류.. --------- unit Unit1; interface uses Windows...
    • 델초
    • 2000.03.23 01:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2000.03.23 01:56
      Primary Key 선택시.. 필드를 두개 선택하시면 됩니다.. 또는 두개 이상.. 예를 들어.. 날짜 시간 필드...
    • 임형호
      2000.03.23 04:20
      류종택 wrote: > Primary Key 선택시.. > 필드를 두개 선택하시면 됩니다.. > 또는 두개 이상.. > 예를...
    • 권오준
    • 2000.03.23 01:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2000.03.23 01:53
      델파이의 콤포넌트 판넬에서 'Data Access'에 보시면.. StoredProc 라는 콤포넌트가 있습니다.. 이것이 ...
    • 알면다쵸요!
      2000.03.23 06:27
      임형호님, 그리고, 류님.. 모두 답변 감사합니다. 류님은 신해~에서 일하시나봐요? 그럼, 임프님과 아시는...
    • 류종택
      2000.03.23 01:40
      > try > label1.caption:=maskedit1.text; > except on EDBEditError do > messagedlg('공백에러',m...
    • 임형호
      2000.03.23 02:57
      류종택 wrote: > > try > > label1.caption:=maskedit1.text; > > except on EDBEditError do > > ...
    • 류종택
      2000.03.23 04:55
      제글이 좀 애매했나 보네요.. 제 말씀은 해당 코드 부분에서 나는 에러가 아니라.. 콤포넌트 자체에서 처...
    • 델초
    • 2000.03.23 00:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2000.03.23 01:19
      간단한 해결방법은 아래와 같습니다.. 그리고 다음으로 넘어간다라는 발상에 문제가 있습니다.. 이 이벤...
    • 델초
      2000.03.23 19:11
      류종택 wrote: > 간단한 해결방법은 아래와 같습니다.. > 그리고 다음으로 넘어간다라는 발상에 문제가 ...
    • 최재원
    • 2000.03.23 00:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.03.23 01:32
      안녕하십니까? 책에서 본내용이라 한번 적어봅니다. 이제 부터 책의 내용............. 이런 부...
    • 류종택
      2000.03.23 01:17
      Anchors라는 프러퍼티를 사용하세요.. 그 프로퍼티는 왼쪽 오른쪽 고정이 디폴트인데.. 오른쪽 아래로 고...