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
[39179] Re:컴퓨터 시간 알아내는거 질문이요!!
2HB [thigon] 1705 읽음    2005-02-19 11:40
1. 시작 시간 알아내는 법.
api 함수인 GetTickCount함수를 사용하시면 시스템 가동시간을 밀리세컨단위로 보여줍니다.
그러니까. 여기서 리턴된 값과 현재 시간을 빼면 시스템시작시간을 알수 있겠죠.
현재 시간의 경우엔 now()를 사용해서 구할수 있구요.

2. 정해진 시간이 돼면 종료.
제 경우엔 timer를 사용해서 일정 시간마다 정해진 시간과 현재 시간을 비교해서 처리하는 법밖에 모릅니다.
뭐. 이 경우엔 간단하니까. 별로 설명해드릴 필요는 없겠죠 =_=;;

p.s. 실제로 코딩해보고 붙임.
Now의 경우 실제로 계산할 때는 float형이라고 생각하면 되는데 GetTickCount의 경우엔 int형같은게 튀어나오기 때문에 바로 사용하기는 좀 무리가 있고(실제로는 Now의 경우에 1이 하루였던 것으로 기억.. 소숫점 위는 1일기준, 소숫점 밑이 시간,분,초의 내용. 그러니까. 0.5가 12시간이라는 식으로 생각해야 함)좀 손을 써야 합니다.
지금 보고 있는 책은 가남사의 C++Builder정복이라는 책인데. 여기에 있는 예제대로 하면..

    TDateTime nT, sT;
    nT = Now(); //현재시간.
//예제에 나와있는 부분
    int hh,mm,ss;
    long ret;
    String sbuff;
    ret = GetTickCount() / 1000;
    hh = ret / 3600;
    ret -= (3600 * hh);
    mm = ret / 60;
    ret -= (60 * mm);
    ss = ret;
//여기까지 하면 시,분,초단위로 가동시간.
    sbuff = IntToStr(hh)+":"+IntToStr(mm)+":"+IntToStr(ss); //문자열형태로 완성
    sT = StrToTime(sbuff); //문자열형태를 시간정보로 변환
    Label1->Caption = StrToDateTime(nT - sT); //현재시간에서 가동시간을 뺌.

이렇게 하면 일단 나오긴 합니다만, 뭔가 미묘한 문제가 있어서 1초단위로 왔다갔다 합니다. 아마 GetTickCount()에서 나온 정보를 DataTime형태로 변환하는 과정에서 중간중간 올림이나 내림이 발생하는 모양인데... 뭐 제 능력으로는 이게 한계... 뭐 대강은 맞지 않을까 싶긴 해요.

상우s 님이 쓰신 글 :
: 컴퓨터 에서 시작 시간 알아내는 법하고
:
: 정해진 시간이 됏을 때 윈도우 종료하는 방법좀 자세히 알려주세요
:
: 빠른답변 주시면 감사하겠습니다.

+ -

관련 글 리스트
39171 컴퓨터 시간 알아내는거 질문이요!! 상우s 924 2005/02/18
39181     Re:컴퓨터 시간 알아내는거 질문이요!! smleelms 1272 2005/02/19
39179     Re:컴퓨터 시간 알아내는거 질문이요!! 2HB 1705 2005/02/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.