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

解決


けんぢ  2001-08-03 02:39:56  No: 74711

入力された時間を一秒ずつ 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-03 07:41:01  No: 74712

参考までに
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 17:42:18  No: 74713

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


たかみちえ  2001-08-03 19:03:47  No: 74714

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


けんぢ  2001-08-04 02:30:33  No: 74715

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加