|
分類:[VB6 以前]
ファイルのタイムスタンプ(更新日時)を比較しようと思いますが、 Function time_s を二回使用すると、一回目の物が保持された感じになります。 従って下を実行すると必ず1が帰ってきますが、どうすれば 良いでしょうか?
Private Sub Command1_Click() MsgBox times_comp("C:\tmp\test.bat", "C:\tmp\test1.bat") End Function
'★[参照設定] を選択して「Microsoft Scripting Runtime」にチェック★★★★★ 'ファイルのタイムスタンプを比較する。 '戻り '1:同じ '2:後の方が大きい '3:前の方が大きい 'f_p1:例 c:\tmp\test.txt Public Function times_comp(f_p1 As String, f_p2 As String) On Error GoTo er1 Dim dtUpdate1 As Long Dim dtUpdate2 As Long dtUpdate1 = time_s(f_p1) MsgBox f_p1 MsgBox dtUpdate1 dtUpdate2 = time_s(f_p2) MsgBox f_p2 MsgBox dtUpdate2 ' 取得したタイムスタンプを表示する If dtUpdate1 = dtUpdate2 Then times_comp = 1 Exit Function End If If dtUpdate1 < dtUpdate2 Then times_comp = 2 Exit Function End If If dtUpdate1 > dtUpdate2 Then times_comp = 3 Exit Function End If Exit Function er1: On Error Resume Next End Function
Public Function time_s(f_path As String) As Long ' FileSystemObject (FSO) の新しいインスタンスを生成する Dim cFso As FileSystemObject Set cFso = New FileSystemObject ' File オブジェクトを取得する Dim cFile As File Set cFile = cFso.GetFile(f_path) ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing ' 更新日時を取得する Dim dtUpdate As Date dtUpdate = cFile.DateLastModified ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFile = Nothing ' 取得したタイムスタンプを表示する time_s = dtUpdate End Function
|