「平成」を感じるもの

VB6.0について質問です。
指定のフォルダ内にあるMDBファイル名をうまく取得できないのでお知恵をお貸しください。
最初のファイル名は取得できるのですがitem = Dirで次のファイル名を取得できないでいます。
INIfile_readでiniファイルから設定値を取得しています。
エラーメッセージは「プロシージャの呼び出し、または引数が不正です」
最初にファイル名を取得できているときにDirをウォッチ式の追加でみてみたらちゃんと次のファイル名は表示されます。
この場合どのような処理ミスが考えられますか??

path = INIfile_read("PATH", "HD")
item = Dir(path & "\" & "*.mdb", vbNormal)

Do While item <> "" ' ループを開始します。
date1 = Mid(item, 1, 4) & "/" & Mid(item, 5, 2) & "/" & Mid(item, 7, 2)

count = DateDiff("d", date1, Date) '今日とファイル作成日との差を取得

bkup = INIfile_read("DateDiff", "DATE") 'iniファイルから削除す日数を取得
If count > bkup Then

Kill (path & "\" & item)

End If

item = Dir

Loop

A 回答 (5件)

dir()のLoopの中で、


 Kill (path & "\" & item)
を実行しているからじゃないですか?

取得するファイル名のリストがどんどん変化(この場合は削除されて減っている)するので
削除後のファイル名は隙間が開くと思います。
例えば
2番目のファイル名を取得した後で、それを削除すると
次のDir()で取得した3番目のファイル名は
削除前の4番目のファイル名になって3番目のファイル名が取得できない
ということだと思います。

ファイルを削除した場合は、Dir()を最初からやり直したらどうでしょう?
    • good
    • 0

Hayashi_Trek さんのおっしゃる通りだと思います。


私も以前同じ様なことを経験していました。
その時は、FileSystemオブジェクトを使って作り直しました。
参考URLをご覧下さい。

参考URL:http://msdn2.microsoft.com/ja-jp/library/y32kbeb …
    • good
    • 0

どの行でエラーが発生いているのか不明のためはっきりとした原因がわかりません。


INIfile_read()の不具合、MDBのファイル名の定義ミス、count という変数名、その他にエラーの原因があると思われます。

下記コードで実行させてみましたが itemにはちゃんとファイル名が入っていました。

path = "c:\work"
item = Dir(path & "\" & "*.mdb", vbNormal)
Do While item <> "" ' ループを開始します。
 Debug.Print item
 item = Dir
Loop
    • good
    • 0

ステップ実行で


item = Dir
のところでエラーが出ているのを確認しましたか?

bkup = INIfile_read("DateDiff", "DATE")

で次の項目を読みにいってエラーとなっているって事はないですか?
    • good
    • 0

item = Dir()

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報