■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#441-1タイマーコントロール以外の時間の取得方法匿名4412002-08-23(金) 23:34
     #443-1RE#441:タイマーコントロール以外の時間の取得方法不死鳥2002-08-24(土) 01:04
     #448-1RE#443:タイマーコントロール以外の時間の取得方法学生2002-08-24(土) 02:57
     #452-1RE#448:タイマーコントロール以外の時間の取得方法ホッシー2002-08-24(土) 08:38
     #461-1RE#448:タイマーコントロール以外の時間の取得方法不死鳥2002-08-24(土) 12:18
     #462-1RE#461:タイマーコントロール以外の時間の取得方法学生2002-08-24(土) 13:31
#441-1
タイマーコントロール以外の時間の取得方法
タイマーコントロールの精度が悪いので、ゲームがうまく作れない。
精度の良い方法を教えてください。
#443-1
RE#441:タイマーコントロール以外の時間の取得方法
> タイマーコントロールの精度が悪いので、ゲームがうまく作れない。
> 精度の良い方法を教えてください。

Doを使います。
Doを使い、内部時計から、時差をわりだして、コードを実行します。
Timerは、0:00から、現在時刻までの時間を、Single型で、1秒単位で返します。

Dim Timers As Single '変数の宣言
Do
   If Timers < Timer - 0.1 Then 'Timersの値をしらべ、0.1秒ごとにコードを実行する。
   'ゲームのコードをここに入力
   Timers = Timer 'Timersに現在時刻を代入
   End If
DoEvents '他の入力イベントを発生させる。これは必須。
Loop

ただし、この方法だと、正しく時間を入力できるかわりに、0:00に、急に動作が止まってしまう、
可能性があるので。値をリセットするなどして、(普通、Timer < Timers になった場合)対処する必要があります。
また、イベントを終了させるには、Exit Doを使います。
(ちょっといいかげんなのでそれほどあてにはできませんが・・・)
#448-1
RE#443:タイマーコントロール以外の時間の取得方法
> > タイマーコントロールの精度が悪いので、ゲームがうまく作れない。
> > 精度の良い方法を教えてください。
> 
> Doを使います。
> Doを使い、内部時計から、時差をわりだして、コードを実行します。
> Timerは、0:00から、現在時刻までの時間を、Single型で、1秒単位で返します。
> 
> Dim Timers As Single '変数の宣言
> Do
>    If Timers < Timer - 0.1 Then 'Timersの値をしらべ、0.1秒ごとにコードを実行する。
>    'ゲームのコードをここに入力
>    Timers = Timer 'Timersに現在時刻を代入
>    End If
> DoEvents '他の入力イベントを発生させる。これは必須。
> Loop
> 
> ただし、この方法だと、正しく時間を入力できるかわりに、0:00に、急に動作が止まってしまう、
> 可能性があるので。値をリセットするなどして、(普通、Timer < Timers になった場合)対処する必要があります。
> また、イベントを終了させるには、Exit Doを使います。
> (ちょっといいかげんなのでそれほどあてにはできませんが・・・)

すみませんが、もう一度お答えいただけないでしょうか。
Timerはどのぐらいの精度なのですか?シュミレーションのプログラムで、10ミリ秒をでできうる限り正確に測りたいのです。
API等難しいことでもがんばってかくので、どうか教えてください。
#452-1
RE#448:タイマーコントロール以外の時間の取得方法
> >    If Timers < Timer - 0.1 Then 'Timersの値をしらべ、0.1秒ごとにコードを実行する。
> >    Timers = Timer 'Timersに現在時刻を代入
Timerの代わりに GetTickCount API を使うと、1ms単位で時間がわかります。

> > ただし、この方法だと、正しく時間を入力できるかわりに、0:00に、急に動作が止まってしまう、
> > 可能性があるので。値をリセットするなどして、(普通、Timer < Timers になった場合)対処する必要があります。

GetTickCount APIは、Windows起動後経過時間を返すAPIなので、普通に使ってれば
0にはなりません。(49.7日経過すると0になるけど。)

もしくはマルチメディアタイマーを使う手もあります。
#461-1
RE#448:タイマーコントロール以外の時間の取得方法
> すみませんが、もう一度お答えいただけないでしょうか。
> Timerはどのぐらいの精度なのですか?シュミレーションのプログラムで、10ミリ秒をでできうる限り正確に測りたいのです。
> API等難しいことでもがんばってかくので、どうか教えてください。

えっとですね。Timerは、Singl型なので、1秒単位ですが、0.01秒単位で表示されます。

Form_Load
に次のを入力してください。これで起動時の0:00時からの秒数が10ミリ秒単位で表示されるはずです。
Me.Caption = Timer

APIとの差ですが、APIはそれほど詳しくないので、詳しいひとに聞いて見てください。
ただ、どちらも0.01秒単位が限界だとすると、リセット不用なAPIのほうが便利でしょう。

しかし、俺のスペックの場合に誤差が、少なくて0.008秒、多くて0.1秒と、結構誤差があります。
理屈で考えると、処理速度の速いコンピューターほど誤差は少なくなり、正確な時間が計れるはずです。

これが俺の考えられるかぎり正確なタイマー処理です。
#462-1
RE#461:タイマーコントロール以外の時間の取得方法
> 
> えっとですね。Timerは、Singl型なので、1秒単位ですが、0.01秒単位で表示されます。
> 
> Form_Load
> に次のを入力してください。これで起動時の0:00時からの秒数が10ミリ秒単位で表示されるはずです。
> Me.Caption = Timer
> 
> APIとの差ですが、APIはそれほど詳しくないので、詳しいひとに聞いて見てください。
> ただ、どちらも0.01秒単位が限界だとすると、リセット不用なAPIのほうが便利でしょう。
> 
> しかし、俺のスペックの場合に誤差が、少なくて0.008秒、多くて0.1秒と、結構誤差があります。
> 理屈で考えると、処理速度の速いコンピューターほど誤差は少なくなり、正確な時間が計れるはずです。
> 
> これが俺の考えられるかぎり正確なタイマー処理です。

どうもありがとうございました。(^^)
このページと関連する記事:
#18018-0次回からは表示させない・・2001-09-27(木) 16:48
#39907-0Timerを確実に動かす2001-03-07(水) 00:23
#40042-0タイマーコントロールで0時超え2001-03-08(木) 17:26
#11270-0グラフの表示21999-12-09(木) 09:38
#8330-0時刻の取得1999-10-27(水) 16:05
#13392-0ストップウオッチ2000-12-13(水) 01:39
#599-2Timer関数について2003-12-25(木) 14:02
#629-1フォームからフォームのタイマー起動について2002-09-03(火) 13:46
#142-1タブコントロール2003-12-05(金) 13:01
#44733-0ミリ秒単位について2001-07-05(木) 20:53
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)