C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46386] Re:Re:CPort에서 Error처리를 하고 싶은데요..
무식한흑태자 [incu76] 1608 읽음    2006-08-31 13:24
일단 답변 달아주셔서 감사하구요. ^^
말씀하시는 그걸 모르겠다는건 아닙니다. error event가 왜 발생하는 지도 알고 어떻게 event를 발생시켜야 하는지도
알고는 있습니다. 열심히 앞으로 뒤집었다 뒤로 뒤집었다 하는 바람에 거기까진 공부가 됐습니다.
일단 아래 두 OnError event 처리부를 보시죠. 내부는 놔두고 선언부만 가지고 온 겁니다.
하나는 ComPort1의 On Error이고 다른 하나는 ServerSocket1의 OnError 이죠.

void __fastcall TMain_Form::ComPort1Error(TObject *Sender,
      TComErrors Errors)

void __fastcall TMain_Form::ServerSocket1ClientError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

말씀하신 대로 ServerSocket의 경우에는 파라메터 마지막에 int &ErrorCode 가 있어서 에러 번호를 확인할 수가 있는데..
어딘가 찾아보면 이게 무슨 에러인지 알수 있겠죠
그런데 ComPort의 파라메터는 TComErrors Errors 라는 말입니다. 여기서 Errors의 값을 출력 하려면
int 값으로 받아내던 String로 받아내던 해야할 텐데.. 이 TComErrors가 어떤 형인지를 모르겠다 이 말입니다
그래서 컨트롤 누르고 따라가 봤더니

: : #pragma option push -b-
: : enum TComError { ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull };
: : #pragma option pop
: :
: : typedef Set<TComError, ceFrame, ceTxFull>  TComErrors;
: :
이런 부분이 나오더라 이겁니다.
제가 보기에 저기 enum으로 되어 있는 저 부분이 에러의 종류일테고 그것 중 하나를 가지고 오는 파라메터가
TConErrors Errors 일것은 같습니다. 그럼 이걸 어떻게 빼내야 하는 겁니까?

나름대로 빼내려고는 해봤는데.. 그냥 int 값으로 받으려고도 해봤고.. String으로 cast해보려고도 해봤는데
에러만 발생을 하더군요.
실질적으로 어떤 코딩을 해야만 저 값을 빼낼수 있는지.. 그걸 알고 싶습니다.



금목암 님이 쓰신 글 :
: object inspeter-->events->errer =true 하시고
: 이벤트에서 on error 시 나오는 에러 번호나 메세지를 화면에 띄우세요
:
:
: 무식한흑태자 님이 쓰신 글 :
: : CPort의 event 중에서 OnError 이벤트가 있던데 이 이벤트에 대한 처리를 해주고 싶습니다.
: : 에러의 종류같은걸 파악해서 그에 적절한 대처를 해주던가, 사용자에게 메세지를 보여주는 식의
: : 처리를 하고 싶은데 어떻게 해야 할까요?
: :
: : 컨트롤 누르고 TComErrors 따라가 봤더니
: :
: : #pragma option push -b-
: : enum TComError { ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull };
: : #pragma option pop
: :
: : typedef Set<TComError, ceFrame, ceTxFull>  TComErrors;
: :
: : 요런건 나오는데 어떻게 해야할지 잘 모르겠습니다. enum에 보면 RxParity같은 에러도 있고 Overrun에러도 있고..
: : 많이 있는거 같은데 이런 종류가 파라메터로 넘어오는 TComErrors Errors 여기로 넘어온다는 것까지도 알겠습니다
: : 그런데 여기서 어떻게 값을 빼내야 할지를 잘 모르겠습니다.
: :
: : 지난 번에 event 프로퍼티 조정할때하고 마찬가지로 >>나 << 이러한 걸 사용해야 하는 Set 으로 정의된 머시기인건지..
: : 빌더를 좀 속성으로 하다 보니까 모르고 넘어가는게 너무 많네요. __property 같은 것도 당황했었고..
: :
: : 아뭏든 핵심은 TComErrors Errors의 Errors를 어떻게 이용해야 하는가. 이게 핵심 질문입니다. ^^;;

+ -

관련 글 리스트
46366 CPort에서 Error처리를 하고 싶은데요.. 무식한흑태자 965 2006/08/30
46378     Re:CPort에서 Error처리를 하고 싶은데요.. 금목암 1008 2006/08/31
46386         Re:Re:CPort에서 Error처리를 하고 싶은데요.. 무식한흑태자 1608 2006/08/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.