時計が遅れないようにするには?

解決


けんぢ  2001-08-02 17:39:56  No: 74711  IP: [192.*.*.*]

入力された時間を一秒ずつ Beep を鳴らしながらカウントしていくプログラムなんですが,走らせているうちにパソコンの時計がずれるんです.

(.frm)

For I = 0 to text1.text
  Call Pause(1000)
  Beep
Next I

(.bas)

Public Sub Pause(Pausetime as Long)
  Call Sleep(1000)
  DoEvents
End Sub

または,

Public Sub Pause(Pausetime as Long)
  Dim Start as Double
  Start = GetTickCount
  Do While GetTickCount < Start + Pausetime 
    DoEvents
  Loop
End Sub

これでなぜ時計がずれるんでしょう?
DoEventsのせいかな?でもDoEventsが無いと途中で止めれれないし...

編集 削除
Say  2001-08-02 22:41:01  No: 74712  IP: [192.*.*.*]

参考までに
GetTickCount, timeGetTime等の精度について
http://www1.odn.ne.jp/synsyr/prog_t1.html

GetTickCountとtimeGetTimeによる時間測定
http://www.sm.rim.or.jp/~shishido/tick.html

編集 削除
けんぢ  2001-08-03 08:42:18  No: 74713  IP: [192.*.*.*]

上で説明している"時計"とは
タスクの中にある"時計"なんです.
右下にあるやつ

編集 削除
たかみちえ  2001-08-03 10:03:47  No: 74714  IP: [192.*.*.*]

ずれるようならば、1000ミリ秒ごとではなく、
100ミリ秒ごと(くらい)に秒数を監視して、
100ミリ前の秒数と違ったらbeepにすれば?
こうすれば、VBについてるタイマーだけで、結構なことができるみたい。

編集 削除
けんぢ  2001-08-03 17:30:33  No: 74715  IP: [192.*.*.*]

とりあえずいろいろ試してみたところ
Beepを一秒毎に鳴らすことにより
時計が遅れるようです.
今回はそのBeepを鳴らさないようにしました.
ありがとうございましたm(_)m

編集 削除