- ベストアンサー
VB6.0 Dir関数について
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
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
dir()のLoopの中で、 Kill (path & "\" & item) を実行しているからじゃないですか? 取得するファイル名のリストがどんどん変化(この場合は削除されて減っている)するので 削除後のファイル名は隙間が開くと思います。 例えば 2番目のファイル名を取得した後で、それを削除すると 次のDir()で取得した3番目のファイル名は 削除前の4番目のファイル名になって3番目のファイル名が取得できない ということだと思います。 ファイルを削除した場合は、Dir()を最初からやり直したらどうでしょう?
その他の回答 (4)
- spiral
- ベストアンサー率0% (0/1)
Hayashi_Trek さんのおっしゃる通りだと思います。 私も以前同じ様なことを経験していました。 その時は、FileSystemオブジェクトを使って作り直しました。 参考URLをご覧下さい。
- spiral
- ベストアンサー率0% (0/1)
どの行でエラーが発生いているのか不明のためはっきりとした原因がわかりません。 INIfile_read()の不具合、MDBのファイル名の定義ミス、count という変数名、その他にエラーの原因があると思われます。 下記コードで実行させてみましたが itemにはちゃんとファイル名が入っていました。 path = "c:\work" item = Dir(path & "\" & "*.mdb", vbNormal) Do While item <> "" ' ループを開始します。 Debug.Print item item = Dir Loop
- o_chi_chi
- ベストアンサー率45% (131/287)
ステップ実行で item = Dir のところでエラーが出ているのを確認しましたか? bkup = INIfile_read("DateDiff", "DATE") で次の項目を読みにいってエラーとなっているって事はないですか?
- hana-hana3
- ベストアンサー率31% (4940/15541)
item = Dir()