GetTickCountについて

解決


ぶいび2005  2006-08-05 00:07:15  No: 132624

お世話になります。
GetTickCountの使い方がいまひとつわかりません。
Dim SrtTime As Long
Dim EndTime As Long
CapTime  =  60000
Do While (EndTime - SrtTime) < CapTime
  EndTime = GetTickCount()    ーーーーーーーー>①
Loop

これを実行すると①を1回しか通らず
Loopを抜けて(EndTime - SrtTime)の値を見るととても大きな数字が入って
います。

原因わかる方、診断願います。


うなまな  2006-08-05 00:31:34  No: 132625

Dim SrtTime As Long
Dim EndTime As Long
CapTime  =  60000
SrtTime = GetTickCount()    ーーーーーーーー>追加
Do While (EndTime - SrtTime) < CapTime
  EndTime = GetTickCount()
Loop

こういう事?


ぶいび2005  2006-08-05 00:45:24  No: 132626

うなまな さん、ありがとうございます。
>こういう事?

そういう事です。
ただ、できませんでした。前回のコード同様Do While 〜  Loopを1回しか
通りませんでした。
どういう事なのか…開発環境はVB2005です。


特攻隊長まるるう  2006-08-05 00:58:00  No: 132627

GetTickCount の宣言で戻り値の型は何で宣言していますか?


ぶいび2005  2006-08-05 01:04:39  No: 132628

特攻隊長まるるうさん、ありがとうございます。
宣言は
Public Class Form1
    Inherits System.Windows.Forms.Form
    Public Declare Function GetTickCount Lib "KERNEL32" () As Long

Long型ですね。
ただこの文もネットでの引用ですので不安ではあります。


特攻隊長まるるう  2006-08-05 01:07:44  No: 132629

[VB.NET]以降、32ビットの数値型は Integer となりました。
Integer に変更してください。

以下のサイトの4章に一通り目を通してください。
[Visual Basic 6.0 ユーザーのための Visual Basic .NET 移行ガイド]
http://www.microsoft.com/japan/msdn/net/vbtransitionguide/


うなまな  2006-08-05 01:25:14  No: 132630

VB2005だったんだ・・・
じゃぁ、こんな方法もありますよ。

Dim stp As Stopwatch = Stopwatch.StartNew
While stp.ElapsedMilliseconds < 1000
    Application.DoEvents()
End While


ぶいび2005  2006-08-05 01:38:37  No: 132631

特攻隊長まるるうさん、うなまなさん、ありがとうございます。
解決しました。
自分に宣言はVB6.0のだったんですね。
整数型に関する変更点は肝に銘じておきます。


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

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






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