見た目に分かり易くする為StaticTextを作っておきます。
FILETIMEを秒単位にしたもの(2006年1月1日からの経過秒)を、ただ表示するだけのコードです。
当然時間なので、1秒毎に1ずつ増えますので、debugが実行される事は永遠に無い様に見えますが、
暫く眺めてると(この長さはランダム)debugに行くことがあります。
これは何故なのでしょう?
バグなのか、そもそも、私のFILETIMEの求め方が違うのか、
元々、FILETIMEはイイカゲンな物なのか。
数値が大きくなるので、分かり易くする為、引いたり、割ったりしていますが
これはFILETIMEがずれる事には関係ないようです。
割る前、引く前(*マーク)の数値で、自分で確かめました。
FILETIMEの求め方はこの掲示板の過去ログを参考にしました。
http://www.activebasic.com/forum/viewto ... 4%CB%A4%C1
どなたか、この事に関して知っている事や、解決法がありましたら
ぜひ、私に教えてください。宜しくお願いします。
コード: 全て選択
Dim MaeTime As Long 'グローバル
SetTimer(hMainWnd,0,100,NULL) '1000以下なら何でも良い
Sub MainWnd_Timer(TimerID As DWord)
Dim st As SYSTEMTIME
Dim ft As FILETIME
Dim q As QWord
Dim ql As Long
GetLocalTime(st)
SystemTimeToFileTime(st, ft)
q = ft.dwHighDateTime
q = q << 32
q = q + ft.dwLowDateTime '*
q = q - &H1C60E664EE94000 '2006年1月1日までのファイルタイム 引く
ql = Fix(q / 10000000) As Long
If MaeTime = 0 Then
MaeTime = ql
ElseIf MaeTime-2 < ql and ql < MaeTime+2 Then
MaeTime = ql
Else
debug
End If
SetDlgItemText(hMainWnd,Static1,Str$(ql))
End Sub
上記コードでは必ず429秒戻ってしまう様です。
偶然なのか、私の環境だけなのか分かりませんが。
コード: 全て選択
13771465 前
13771036 今
429 差
13771895 前
13771466 今
429 差
13772754 前
13772325 今
429 差