timegettimeについて

解決


もと  2004-05-29 18:47:18  No: 113579

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

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

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


ゆう  2004-05-29 19:13:40  No: 113580

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 19:18:37  No: 113581

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


もと  2004-05-29 21:03:11  No: 113582

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


Say  2004-05-29 21:49:34  No: 113583

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

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

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


Say  2004-05-29 21:52:26  No: 113584

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


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




  


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