timegettimeについて

解決


もと  2004-05-29 09:47:18  No: 113579  IP: [192.*.*.*]

過去の履歴で検索してやってきました。

>WIN95系の場合、誤差が顕在化する以前にオーバーフローしてシステムが破綻します。
>timeGetTimeやGetTickCountを保持するシステム変数はunsign int ですから、
>保持できる最大値は 4294967295msec ≒ 49.71日です。
>従って、Win95系マシンを50日つけっぱなしにすれば、破綻を確認できます。

Declare Function timeGetTime Lib "winmm.dll" () As Long
でlongを超えるとオーバーフローすると思いますが。
その後値は0から始まりますか。
timeGetTime 連続稼働で使うためにはどうすればよろしいのでしょうか。
お願いいたします。

編集 削除
ゆう  2004-05-29 10:13:40  No: 113580  IP: [192.*.*.*]

MSDNには下記のような記述がありました。

Note that the value returned by the timeGetTime function is a DWORD value. The return value wraps around to 0 every 2^32 milliseconds, which is about 49.71 days.

0に戻るようです。
ある時点Aともう一つの時点Bの差の絶対値ABS(A-B)を取れば0に戻っても処理できると思います。

編集 削除
ゆう  2004-05-29 10:18:37  No: 113581  IP: [192.*.*.*]

ああ、、、無責任な書き込みでした。すみません。
絶対値じゃまずいですね。
AとBを判断してBの方が小さければ特殊な処理となりますね。
それにしても2点が50日を超えると判断のしようがなくなりますが。

編集 削除
もと  2004-05-29 12:03:11  No: 113582  IP: [192.*.*.*]

msecのタイマーがほしいだけなので、0クリアされるならうれしいです。
ありがとうございました。

編集 削除
Say  2004-05-29 12:49:34  No: 113583  IP: [192.*.*.*]

どっかで見たような書き込みが元ネタになってるようですが・・・。

>msecのタイマーがほしいだけなので、0クリアされるならうれしいです。
OSによっては深刻な結果になります。

http://www2.plala.or.jp/teppei/hardware/qanda/soft.htm#a27
Windows95/98を49日以上連続稼動するとハングする

編集 削除
Say  2004-05-29 12:52:26  No: 113584  IP: [192.*.*.*]

ついでに
>50日を超えると判断のしようがなくなりますが。
Now()の戻り値を併用すれば判断可能かと。

編集 削除