掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
時間を待たせるには (ID:88392)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ねろさん、おしいです。 正から負へ転じる時にオーバーフロー処理をするのはいいのですが、そこの処理が 何回も行われてしまうのがいけないですね。 49.71/2日なんて待っていられませんのでtimeGetTime の変わりに簡単なダミー関 数を作成して検証しました。 Private Sub Command1_Click() Call timeWaitTime(10000) End Sub '**************************** '* 指定時間Waiteする関数 * '**************************** Private Sub timeWaitTime(ByVal waitTime As Double) Dim BackTime As Double Dim lngCount As Long Dim blnFlg As Boolean BackTime = hogehoge(lngCount) '計測開始時間 Do lngCount = lngCount + 1 If hogehoge(lngCount) - BackTime < 0 Then If Not blnFlg Then 'オーバーフォロー処理 waitTime = waitTime - (maxTime - BackTime) BackTime = 0 blnFlg = True End If End If 'Sleep (1) DoEvents Loop While (hogehoge(lngCount) - BackTime < waitTime) Debug.Print lngCount End Sub Private Function hogehoge(lngCount As Long) As Long If lngCount = 0 Then hogehoge = &H7FFFFFFF 'hogehoge = -1 Else hogehoge = &H80000000 + lngCount - 1 'hogehoge = lngCount - 1 End If End Function >※誤爆してるかも…特にtimeGetTimeの戻り値が正→負になるかどうか…(orz > 詳しい人教えてください;; > 別に詳しいわけではないけど戻り値として32bitの値が返ってくるのです。 それをVBのLong型がどのように解釈するかだけではないですか?(MSBを符号として 解釈するなど) 以下MSDNの内容の一部: 戻り値は 0 ミリ秒から 2^32 ミリ秒の間を循環します。 APIを使用するときもVBの関数を使用するときも一度ヘルプを呼んで仕様を理解した 後に使用して下さい。ヘルプを読まずに勘でプログラムを書くから怖い結果になっ てしまうのだと思いますよ。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.