C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ファイルのタイムスタンプ比較(更新日時)


(過去ログ 96 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■57574 / inTopicNo.1)  ファイルのタイムスタンプ比較(更新日時)
  
□投稿者/ どめすと (4回)-(2011/03/05(Sat) 09:18:44)

分類:[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

引用返信 編集キー/
■57576 / inTopicNo.2)  Re[1]: ファイルのタイムスタンプ比較(更新日時)
□投稿者/ やじゅ (1852回)-(2011/03/05(Sat) 10:47:31)
やじゅ さんの Web サイト
No57574 (どめすと さん) に返信
> ファイルのタイムスタンプ(更新日時)を比較しようと思いますが、
> Function time_s
> を二回使用すると、一回目の物が保持された感じになります。
> 従って下を実行すると必ず1が帰ってきますが、どうすれば
> 良いでしょうか?

VB6が無いのでVBSに書き換えてみましたけど、正常な結果が返ってきましたよ。
ファイル指定で同じファイル名を渡しているんじゃないの?

引用返信 編集キー/
■57588 / inTopicNo.3)  Re[2]: ファイルのタイムスタンプ比較(更新日時)
□投稿者/ どめすと (5回)-(2011/03/05(Sat) 21:13:58)
No57576 (やじゅ さん) に返信
ご回答有り難う御座いました。
再度確認しましたが、やはり同じでした。
long の変数を dateに変えましたら比較出来た様です。
大変有り難う御座いました。

Private Sub Command1_Click()
MsgBox times_comp("C:\tmp\test.bat", "C:\tmp\test1.bat")
End Function
これは当たり前でしょうが、
End Sub
の間違いでした。
解決済み
引用返信 編集キー/
■57590 / inTopicNo.4)  Re[3]: ファイルのタイムスタンプ比較(更新日時)
□投稿者/ やじゅ (1854回)-(2011/03/05(Sat) 22:09:53)
やじゅ さんの Web サイト
No57588 (どめすと さん) に返信
> long の変数を dateに変えましたら比較出来た様です。

VBSだと型が無いため、型の部分を消してたから自動的にDate型として認識されて正常に動いてたのね。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -