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
[69541] Re:많은 토론끝에 문제점을 찾았습니다. 자답입니다.
김태선 [cppbuilder] 2819 읽음    2013-05-27 19:38
어차피 오차가 있고 DWORD 값 범위에서 다시 0으로 되돌아가는 GetTickCount 함수를 쓰기보다는

TTime 으로  이전 시간을 저장해 놓고
MilliSecondsBetween 함수로 경과 시간을 체크하는 방법이
훨씬 나을 것 같군요.
저는 쓰레드 내에서 시간 경과는 이렇게 검사 합니다.



김시환 님이 쓰신 글 :
: 논리적인 오류는 맞습니다. 다만 Overflow 의 문제는 아닙니다.
: 이경문님의 답변에서 힌트를 얻었습니다.
:
: GetTickCount 함수는 어차피 Overflow 가 되면 0으로 초기화 시키고, 아래 변수들 중에서 m_dfDelayTime 은 제가 일부러 double 로 선언했기 때문에 Overflow는 발생하지 않습니다.
:
: 문제는 1193시간이 지난후부터 m_dfDelayTime 값이 계속 음수가 나오기 때문에  if(m_dfDelayTime > 10) 문이 참이 될수 없다는 것이네요..  결국 m_dfDelayTime 이 음수가 되면 m_dfStartTime 변수를 다시 갱신해 주는 코드가 한줄 필요하네요...
:
: 답변해 주신분들 감사합니다. 이래서 토론이 좋은것인가 봅니다. 머리싸매고 토론하다 보면 좋은 결론이 나오네요..
:
:
:
:      while(!Terminated)
:      {
:          m_dfDelayTime = (GetTickCount() / 1000.0) - m_dfStartTime ;
:
:           if( m_dfDelayTime < 0) m_dfStartTime = GetTickCount() / 1000.0 ;      <-- 한줄추가..

:          if(m_dfDelayTime > 10)      // 10초에 한번씩 시스템데이타를 읽어 온다.
:          {
:                Data_Read() ;
:         
:                m_dfStartTime = GetTickCount() / 1000.0 ;
:          }

:           if(user_stop == true) this->Terminate() ;

:           if( g_dfTestTime <= 0) Sample_Test()
:      }
:
:

+ -

관련 글 리스트
69522 GetTickCount() 함수에 대한 의문점... 김시환 2784 2013/05/27
69606     Re:GetTickCount() 함수에 대한 의문점... 김동원 2945 2013/06/07
69538     많은 토론끝에 문제점을 찾았습니다. 자답입니다. 김시환 3045 2013/05/27
69541         Re:많은 토론끝에 문제점을 찾았습니다. 자답입니다. 김태선 2819 2013/05/27
69540         Re: 음수가 나왔다는 것 자체가 오버플로어 때문이죠 99 2842 2013/05/27
69543             Re:Re: 음수가 나왔다는 것 자체가 오버플로어 때문이죠 김시환 2912 2013/05/28
69523     Re:GetTickCount() 함수에 대한 의문점... Lyn 3518 2013/05/27
69524         Re:Re:GetTickCount() 함수에 대한 의문점... 김시환 2736 2013/05/27
69525             Re:Re:Re:GetTickCount() 함수에 대한 의문점... 이경문 2602 2013/05/27
69527                 Re:Re:Re:Re: 논리적인 오류임 흐흠 2357 2013/05/27
69533                     Re:Re:Re:Re:Re: 논리적인 오류임 - GetTickCount64() 에 대해.. 장성호 4677 2013/05/27
69536                         Re:Re:Re:Re:Re:Re: 논리적인 오류임 - GetTickCount64() 에 대해.. 김시환 3181 2013/05/27
69534                         Re:Re:Re:Re:Re:Re: 논리적인 오류임 - GetTickCount64() 에 대해.. 지나다가 2750 2013/05/27
69528                     Re:Re:Re:Re:Re: 논리적인 오류임 김시환 2510 2013/05/27
69531                         Re:Re:Re:Re:Re:Re: 논리적인 오류가 맞습니다 지나다가 2736 2013/05/27
69535                             Re:Re:Re:Re:Re:Re:Re: 논리적인 오류가 맞습니다 김시환 2293 2013/05/27
69537                                 Re:Re:Re:Re:Re:Re:Re:Re: 논리적인 오류가 맞습니다 이경문 2597 2013/05/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.