GetTickCountが返す最大値は?

解決


なか  2009-09-23 06:01:21  No: 35757  IP: 192.*.*.*

文系グラマですみません。

GetTickCountについてネットで調べてたんですが、戻り値をIntegerで受けてる場合とCardinalで受けている場合がありました。

Cardinalで受けた方が大きい値を受けうるとおもうんですが、GetTickCountが返す値の最大値っていくつなんでしょうか?

編集 削除
igy  2009-09-23 08:35:41  No: 35758  IP: 192.*.*.*

試していませんが、49.7日をミリ秒にした値
ぐらいかと思います。

編集 削除
igy  2009-09-23 08:53:20  No: 35759  IP: 192.*.*.*

>戻り値をIntegerで受けてる場合とCardinalで受けている場合がありました。

ヘルプによると、戻り値はDWORDのようです。

DWORD GetTickCount(VOID)

The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if Windows is run continuously for 49.7 days.

編集 削除
Vista以降なら  2009-09-23 12:15:47  No: 35760  IP: 192.*.*.*

GetTickCount64というAPIが追加されてCardinalの最大値4294967295ミリ秒(49.7日)の壁はなく、実質的には無制限になったと言えるけど、50日も経てばPCの時間は数十秒くるうと思われるので、もし長期間で精度を要求するならネット上のタイムサーバーから日時を取得する方法がいい。

編集 削除
なか  2009-09-23 12:58:24  No: 35761  IP: 192.*.*.*

>49.7日をミリ秒にした値

ありがとうございます。
なんとかあふれないように組み込んでみたいと思います。

編集 削除