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

C/C++ Q/A
[3230] Re:볼랜드 3.1에서 시간 지연시키는 방법 없나요?
Starlet [starlet5] 1474 읽음    2004-02-20 01:32
안녕하세요. 시간지연시키는 가장 쉬운 방법은 for문을 이용하여, 예를 들면 1에서 100만까지 세라고 시키는 방법이 있겠죠? for (int i=0; i<1000000; i++) 이렇게요. 또 하나의 방법은 clock() 같은 함수를 이용하는 방법입니다. clock() 함수의 리턴값은 프로그램이 시작된 후부터 얼마나 지났는지를 밀리세컨드 단위로 보여줍니다.

#include <time.h>

void delay(long millisec)
{
   clock_t c1, c2;

   c1 = clock();
   do {
       c2 = clock();
   } while (c2-c1 < millisec);
}

c2에 clock()으로 계속 값을 받아 delay 함수가 시작되었을때 시간 c1과 millisec만큼의 차이가 나면 함수가 끝나는 형식입니다. 참고로 clock()은 내부적으로 GetTickCount() 라는 함수를 호출하며 이 함수는 윈도우가 시작된지 얼마나 지났는지를 역시 millisecond 단위로 리턴해 줍니다.

이상은 간단히 시간지연을 할 수 있는 방법이지만 단점으로 저 delay함수가 실행되는 동안은 루프를 돌면서 CPU를 점유하게 되며 중간에 다른 어떤 윈도우 메세지도 받지 못합니다
Borland C++ 질문/답변중에 시간지연 도중에도 윈도우 메세지를 받아 처리할수 있는 김성진님의 좋은 답변이 있으니 아래 링크도 참고하시기 바랍니다.

http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=13022


김원평 님이 쓰신 글 :
: 윈도우즈98에서 window borland c++ 3.1 버젼으로 작업하고 있습니다.
:
: 그런데 시간을 지연 시킬수 있는 방법이 없더군요.
:
: 도스에서 사용하던 delay() 도 안 먹고,
: 일반적으로 ANSI에서 지원하는 sleep()도 안 먹더군요.
:
: 설마 방법이 없는것은 아니겠죠?
:
: 유닉스 환경에서만 작업 하다가.
: 갑자기 맡게된 일이라 어려움이 많군요.
:
: 아시는분 답변 부탁드립니다.

+ -

관련 글 리스트
3227 볼랜드 3.1에서 시간 지연시키는 방법 없나요? 김원평 1178 2004/02/18
3230     Re:볼랜드 3.1에서 시간 지연시키는 방법 없나요? Starlet 1474 2004/02/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.