- ベストアンサー
VBでGetTickCountを使ってmsecデータを扱う方法とは?
- VB初心者のためのGetTickCountを使ったmsecデータの取り扱い方について解説します。
- GetTickCountを使用してmsecデータを扱う際に、時折大きな数値が帰ってくる場合があります。その原因について考察します。
- WindowsXPにおいてGetTickCountを使用してmsecデータを取得する際、精度の向上につながる方法を紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBのバージョンと関数定義が間違っています。 > Handles buttonRun.Click このコードは VB.NET 以降のもの。 VB.NET 以前(VB6.0など)と大きく仕様変更がありました。 処理のベースが 16bit→32bit に変わりました。 http://msdn.microsoft.com/ja-jp/library/dd297710.aspx > Private Declare Function GetTickCount Lib "Kernel32" () As Long この定義は VB.NET 以前のものですので、Long を Integer に 変更する必要があります。 ただ、GetTickCount って System.Environment.TickCount がフレームワーク上から呼び出していたような気もします。 http://dobon.net/vb/dotnet/system/tickcount.html 自分で初心者と言っているような人が API 宣言使うより、 フレームワークの関数を利用した方がいいと思います。
その他の回答 (1)
- DreamyCat
- ベストアンサー率56% (295/524)
VBを使っていないので、見当はずれの横槍になるかもしれませんが。 まずこれをわかりやすく書いてください。 他人が見た時は無意味なデータで混乱します。 TextBox1.Text = TextBox1.Text & n & " : " & BeforeTime & " " & BeforeTime - NowTime & ControlChars.CrLf ↓ TextBox1.Text = TextBox1.Text & n & " : " & BeforeTime - NowTime & ControlChars.CrLf ・VBの数値の型とAPIの型は合っているでしょうか。違っているような気がします。 そのためにこんなありえない値が出るのではないかと。4,294,967,311 昔のlongと今のVBのlongではビット数が2倍違うのでは? ・私の古いXP機、Excel VBAでもわずか1msで8000回も取得できます。 プログラムがCPUを占有していると数百msくらいになることはあるかもしれません。 0以外の値を簡単に取得したければループの中にDoeventsを入れてください。 VBAの場合で、また私のHPなのですが参考にしてください。 http://homepage2.nifty.com/DreamyCat/APIpage1.htm
お礼
丁寧な回答大変ありがとうございました。 型でした、型を合わせたら解決しました。 助かりました。
お礼
丁寧な回答大変ありがとうございました。 Long を Integer にしたら解決しました。 助かりました。