: TTimer 컴포넌트에 관련된 질문입니다.
:
: Interval 프로퍼티에 값을 넣으면 그 값만큼의 시간 뒤에 메시지가 발생지요..
:
: 그런데 NT와 98에서 좀 차이가 나더군요.
:
: 시스템 사양에 따라 조금씩 다르지만
:
: NT에서는 Interval이 10(보통 10단위 이하의 값 차이는 무시되더군요)까지도 처리가 되는데,
:
: 98에서는 그 메시지들을 다 처리하지 못해서 Interval 값이 100을 넘겨야 겨우 처리되더군요.
:
: 원래 98에서 메시지의 처리가 늦는지 아니면 어떤 다른 문제가 있는지...
:
: 또, 그 해결방안을 아시면 설명을 부탁드립니다.
:
임펠리테리입니다.
원래 그렇습니다. ^^;;;;
TTimer 탓이 아니라, 윈도우즈의 타이밍 메시지 자체가 이론적인 값인 1/1000초 단위를
지원하지 않습니다. 실제로는 1 tick(1/18초) 단위입니다.
그래서 타이머에서 Interval을 1로 설정해도, 시스템에 따라
조금씩 다르기는 하겠지만,
1/1000초 단위로는 이벤트가 발생하지 못합니다.
그리고.. 98이 원래 느립니다. 그건 어쩔 수 없는 문제입니다. 메모리와 cpu속도를 더 늘려줘야
하는거죠.
해결하는 방법은 한가지 있습니다.
예전에 이런 타이머의 문제가 논란이 된적이 있습니다. 사실 윈도우즈의 표준 타이머는
1/18초밖에 지원하지 못하지만, 실제로 윈도우즈를 보면 이 이상의 속도로 처리하는
예를 몇군데에서 볼 수 있습니다. 대표적인 곳이 비디오 처리쪽이죠. 화면의
갱신 속도가 초당 30프레임 이상이 허다한데, 만약 여기에서 표준 타이머를
사용했다면 화면이 넘어가는 속도가 펄럭~펄럭~ 하고 보일겁니다.
여기에서 누군가가(외국의 누구였는데요. 이름은... ^^) 멀티미디어 처리 쪽을
뒤져보면 더 정확한 타이머가 있을거라고 착안한 겁니다. 물론 MS에서 공개를 안한
거였죠. 그리고.. 실제로 멀티미디어 관련의 dll중 하나에서 실제로 그 함수가
발견되었답니다.
지금은 이 사실은, 관심을 가지는 프로그래머라면 대부분이 알고 있는 것이 되었구요.
또 델파이나 빌더에서 사용할 수 있는 관련 서드파티 컴퍼넌트도 나와있는 걸로
알고 있습니다. 아마도 수퍼페이지에서 찾아보시면 쉽게 서너가지 정도는 발견하실 수
있겠네요. 수퍼페이지는 여기 제 홈페이지의 Links 페이지에서 찾아보실 수 있습니다.
그럼 참고하시길...
|