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

C/C++ Q/A
[6228] Re:dos프로그램인데 너무 어렵습니다.
남병철.레조 [lezo] 18157 읽음    2008-09-18 10:03
흠.. 뭘하는건지 정확히 모르겠지만
hsec에 100을 넣으면 일단 -1이 나오겠네요.

4320000은 50일을 초로 환산한 것인데 hsec값이 저 값을 초과하면 0이 나오게 됩니다.
다만 TE에는 다시 100일치 초를 누적해서 TS와는 50일치 차이가 나게 됩니다.
WaitHTime을 계속 호출하면서 hsec값이 증가하여 50일이 지나면 무슨 일이 일어나는가 보네요 ㅡ.ㅡ;
그러고 pos는 static int 배열을 일종의 메모리 풀로 활용하거나 100개의 장비?를
관리하는 뭔가 구분기준이 되겠네요.

코드가 혼자만의 c 스타일 네이밍이라 가독성에 마이너스 점수를 줍니다. -_-+...



김주상 님이 쓰신 글 :
: 제 실력으로는 너무 어려워서 해석을 못 하겠습니다.
: pos에 83,hsec에 100을 넣었을때 어떤 값이 반환되나요?
: 알기쉬운 해석 부탁드립니다.
:
: unsigned long Time2HSec(struct time ct)
: {
:     return
:     _Time2HSec(ct.ti_hour % 24,
:            ct.ti_min  % 60,
:            ct.ti_sec  % 60,
:            ct.ti_hund %100);
: }
:
: int WaitHTime(int pos, long hsec)
: {
:     static unsigned long TS[100],TE[100];
:     struct time t1,t2;
:     static int           TA[100],init=0;
:
:     if(EmerGenCy){ TA[pos]=0; return 0;}
:     if(pos<0 || pos>99) return 0;
:     if(!init) for(init=0; init<100; init++) TA[init]=0;
:     if(!hsec) {TA[pos]=0; return 0;}
:     disable();
:     if(!TA[pos]) {gettime(&t1); TS[pos]=Time2HSec(t1)+hsec; TA[pos]=-1;}
:     gettime(&t2); TE[pos]=Time2HSec(t2);
:     if((long)(TS[pos]-TE[pos])>4320000L)    TE[pos]+=24L*60L*60L*100L;
:     if(TS[pos]<=TE[pos]) TA[pos]=0;
:     enable();
:     return TA[pos];
: }

+ -

관련 글 리스트
6225 dos프로그램인데 너무 어렵습니다. 김주상 10643 2008/09/17
6228     Re:dos프로그램인데 너무 어렵습니다. 남병철.레조 18157 2008/09/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.