情報が役に立ったら、ぜひ、
をクリックして、ポイントを贈ってください。
| 話題 | 更新日時 | 概要 |
| 設定データをファイルに保存する方法 | 2004/03/18 | 設定データをファイルに保存する方法 |
| MySQLを操作する | 2004/03/12 | MySQLを操作する方法 |
| 安全な一定の時間待つプログラム | 2003/12/16 | よく紹介されているコードには問題があります。 |
Sub Sleep(ByVal WaitTime)
Dim Start As Single
Start = Timer
Do While Timer < Start + WaitTime
DoEvents
Loop
End Sub
よく見かけるプログラム(コード)ですが、このプログラムには問題があります。
Sub Sleep2(ByVal WaitTime)
Dim Start As Single, n As Single
Const m = 60# * 60# * 24#
Start = Timer
Do While Timer < Start + WaitTime
If Start > Timer Then
If Timer > WaitTime - (m - Start) - 1 Then
Exit Do
End If
End If
DoEvents
Loop
End Sub
スマートな記述ではありませんが、現在の時間が開始時間より小さい場合を考慮しています。
Dim Flg
Sub Sleep3(ByVal WaitTime)
Dim Start As Single, n As Single
Const m = 60# * 60# * 24#
Start = Timer
Do While Timer < Start + WaitTime
If Start > Timer Then
If Timer > WaitTime - (m - Start) - 1 Then
Exit Do
End If
End If
If Flg = False Then
Exit Do
End If
DoEvents
Loop
End Sub
Private Sub Form_Load()
Flg = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
Flg = False
End Sub
フォームがロードされるときに、グローバル変数FlgをTrueに設定し、アンロード時にFalseに設定するようにしています。Sleep3内では、FlgがFalseの場合は、すぐにループを抜けるようにしています。