|
enum 타입은 아시는바와 별 다를바가 없습니다. 궁금해하시는 데이터 타입은 'Set' 인거 같은데
: #pragma option push -b-
: enum TComError { ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull };
: #pragma option pop
:
: typedef Set<TComError, ceFrame, ceTxFull> TComErrors;
여기서 보시면 enum 타입인 TComError 를 이용하여 TComErrors 라는 Set 타입의 데이터를 정의 하고 있습니다.
Set을 소스 추적해서 보시면 template를 이용해서 구현된 클래스인걸 확인하실수 있구요.
델파이에서는 set 이라는 데이터 형식이 존재하는데 BCB에서 그것과 호환되기 위해 만들어진 클래스 같습니다.
개념적으로 보면...전자제품 부품들중에(컴퓨터 메인보드라던지) 딥스위치 있죠?
그거 생각하시면 됩니다.
위 TComErrors을 예로 들면
ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull
등등의 이름이 붙은 스위치들이 있다고 보시구요.
ComPort->Events >> evRxChar 라고 했으면 evRxChar 라는 스위치를 Off로 내린것으로 생각하시고
ComPort->Events << evRxChar 은 반대로 스위치를 On으로 올린 것으로 생각하시면 됩니다.
현재 스위치가 올라가 있는지 내려가 있는지 확인은
ComPort->Events.Contains(evRxChar) 로 하시면 true 또는 False가 리턴 됩니다.
p.s.
저같은경운 BitField 대신 종종 사용하곤 합니다.
무식한흑태자 님이 쓰신 글 :
: 얼마전에 질문했었는데 답변이 되질 않아 다시 한번 질문 드립니다.
: 아래 소스..라고 하긴 좀 그렇지만 아뭏든 보시면 TComError의 선언부입니다.
: ComPort에서 사용되는 건데..
: enum 타입같은데.. 보통 C에서 enum type 같은 경우 int 타입과 그냥 호환되게 사용해도 되는것으로 아는데..
: 그러니까 switch(enum type) 이런식으로 사용해도 되는 것으로 알고 있었습니다
: 그런데 TComError 타입은 그렇게도 사용이 되질 않고.. 저는 클래스로 되어 있어서 제가 내부 멤버함수나 변수를
: 제대로 끌어내지 못하는 거겠거니 했는데, 아래를 보면 그렇지는 않은것 같고..
: 아직 C에 대한 내공이 부족해서 enum 타입의 사용법을 잘 모르는거라고도 생각해서 enum 타입에 대해서
: 찾아보기도 했습니다.
: 전에 ComPort의 Events 프로퍼티에 관해서 물어봤을때도 보니까.. TComEvent도 같은 타입이더군요
: 그때 프로퍼티 set 하는 법을 물어보니
: ComPort->Events>>evRxChar 이런식으로 상태값을 true, false로 바꾼다고 하더군요.
: 물론 그렇게 해서 에러 안나고 컴파일은 잘되고 있습니다. 아직 테스트를 못해서 결과는 확인 못했지만..
: 아마 될거라고 생각합니다.
: 그런데 왜 이렇게 되는것인지도 모르겠고.. 이건 set하는 법인데 그렇다면 evRxChar이 가진 값이 true인지 false인지
: 어떻게 확인할 수 있는건지??? 이런것도 알고 싶은데..
: C++책을 찾아보고, 빌더 책을 찾아보고, 도움말을 아무리 뒤적거려 봐도 해답을 찾을수가 없습니다
: 물론 이곳 게시판도 저 나름대로 이런 저런 키워드 넣어서 열심히 뒤져보고요..
: 이거 찾는데 이틀 꼬박 걸리고 있습니다. 좀 도와주세요.. ㅜ_ㅜ
:
:
: #pragma option push -b-
: enum TComError { ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull };
: #pragma option pop
:
: typedef Set<TComError, ceFrame, ceTxFull> TComErrors;
|