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

델파이 Q&A
Delphi Programming Q&A
[8548] Re:[질문] 비트연산하세요...
정찬희 [bromanes] 1317 읽음    2002-12-17 19:03

만약 JOB_STATUS_ERROR 와 JOB_STATUS_PRINTING 이 jobinfo2.status에 들어있다면
그숫자는

00010010    <-- 이런식으로 되어있겠죠...
&
00000010
-----------
00000010   <-- 이렇게 됩니다...

풀어보면

if (jobinfo2.status and JOB_STATUS_ERROR) = JOB_STATUS_ERROR then
  showmessage('JOB_STATUS_ERROR 가 포함되었네');
if (jobinfo2.status and JOB_STATUS_PRINTING) = JOB_STATUS_PRINTING then
  showmessage('JOB_STATUS_PRINTING 도 포함되었네');

이렇게 하시면 됩니다..
알아내고자 하는 상태만큼 if 연산을 하세요...

이상탁 님이 쓰신 글 :
: 안녕하세요.
: 아래의 함수를 실행하면
:
: var
:    PrinterHandle : THandle;
:    Jobinfo2 : JOB_INFO_2;
:    PcbNeeded : DWord;
:    PcReturned : DWord;
: begin
:    OpenPrinter(PChar(PrinterName), PrinterHandle, 0);
:    EnumJobs(PrinterHandle, 0, 10, 2, Jobinfo2 , SizeOf(Jobinfo2), PcbNeeded, PcReturned);
: end;
:
: jobinfo2.status 의 값들은 다음값들의 조합으로 리턴되더군요
:
:   JOB_STATUS_PAUSED                   = $00000001;
:   {$EXTERNALSYM JOB_STATUS_ERROR}
:   JOB_STATUS_ERROR                    = $00000002;
:   {$EXTERNALSYM JOB_STATUS_DELETING}
:   JOB_STATUS_DELETING                 = $00000004;
:   {$EXTERNALSYM JOB_STATUS_SPOOLING}
:   JOB_STATUS_SPOOLING                 = $00000008;
:   {$EXTERNALSYM JOB_STATUS_PRINTING}
:   JOB_STATUS_PRINTING                 = $00000010;
:   {$EXTERNALSYM JOB_STATUS_OFFLINE}
:   JOB_STATUS_OFFLINE                  = $00000020;
:   {$EXTERNALSYM JOB_STATUS_PAPEROUT}
:   JOB_STATUS_PAPEROUT                 = $00000040;
:   {$EXTERNALSYM JOB_STATUS_PRINTED}
:   JOB_STATUS_PRINTED                  = $00000080;
:   {$EXTERNALSYM JOB_STATUS_DELETED}
:   JOB_STATUS_DELETED                  = $00000100;
:   {$EXTERNALSYM JOB_STATUS_BLOCKED_DEVQ}
:   JOB_STATUS_BLOCKED_DEVQ             = $00000200;
:   {$EXTERNALSYM JOB_STATUS_USER_INTERVENTION}
:   JOB_STATUS_USER_INTERVENTION        = $00000400;
:   {$EXTERNALSYM JOB_STATUS_RESTART}
:   JOB_STATUS_RESTART                  = $00000800;
:
: 즉, jobinfo2.status 값이 $12 값이 리턴되면 JOB_STATUS_ERROR 와 JOB_STATUS_PRINTING 의 조합인데, $12 값으로 위의 두 값을 분리하는 방법을 잘 모르겠습니다.
:
: 물론 위의 경우 이 외에 여러가지 형태로 조합해서 값이 들어오던데요...
: 각각의 어떤 값들이 조합되었는지 다시 분리하는 법을 알고 싶습니다.
:
: 아시는 분은 부탁드립니다.
:
: 감사합니다.

+ -

관련 글 리스트
8547 [질문] 상태값들이 조합되어 올 때 각각의 값을 알 수 있는 방법은? 이상탁 1122 2002/12/17
8548     Re:[질문] 비트연산하세요... 정찬희 1317 2002/12/17
8551         감사합니다. 이상탁 657 2002/12/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.