プロが教えるわが家の防犯対策術!

お世話になります。VB6.0でUnlha32を使用してLZHファイルを解凍後、LZHファイルを削除する処理を作ってみたのですが、LZHをいざKILLステートメントで削除しようと思うと、”パスが無効”と出てしまって削除できません。

ret=Unlha(・・・)
if ret = 0 then
ChDir LZHファイルがあるフォルダ
Kill LZHファイル  ← ここでエラーが出る
end if

こんな感じなのですが、Killの前で何かやっておかなければならないのでしょうか?
例えばNothing や Closeのように 処理と切り離すコマンドが必要なのかな?

A 回答 (3件)

LZHファイルが「別のドライブに存在」するのではないでしょうか?


ChDirでは「そのドライブのフォルダが変更されるだけ」で,ドライブは変更しません.
そして「フォルダの変更状態はドライブ毎に独立して存在する」のです.

ret=Unlha(・・・)
if ret = 0 then
ChDrive LZHファイルがあるドライブ
ChDir LZHファイルがあるフォルダ
Kill LZHファイル
end if

こんな感じでいかがでしょうか?
おそらくヘルプを読まれたようですね.
KILLステートメントの例が,フルパス指定ではなかったのかもしれません.
しかし,私もKojiSさんのアドバイス通り,KILLステートメントにフルパス指定される方がベターかと思います.
がんばってください.
    • good
    • 0

-jsbスイッチは指定していますよね?

この回答への補足

解凍は下記の通りでやってます。

ret = Unlha(Me.hWnd, "e -ngm """ & FreezeFile & """ """ & workPath$ & """ ""*.*""", Buff, 64000)

成功すれば ret=0 ですよね。

皆様、色々ご回答ありがとうございました。
結局、イージーミスであることが発覚しました!!
元々、解凍しているファイルはCD-ROMに焼いたものを手で固定フォルダへコピー後、解凍プログラムを起動していたものであり、つまり!そのままだと「読み取り専用」の属性が付いたまま削除処理をしようとしているのですね。
本当にごめんなさい。(こんな簡単なことがわかるのに丸一日かけてしまいました(TT))
無事解決しました。

補足日時:2001/03/23 17:07
    • good
    • 0

なぜ Killでフルパスを設定しないかが疑問です。

一度フルパスで指定してみてください。それでエラーになる場合は、フォルダかファイル名が間違っています。

この回答への補足

ごめんなさい、説明が足りませんでした。
フルパスでも試してみましたがダメでした。
あるマシンではエラーが出ないのですが、処理スピードが遅いマシン(Pentium133)だとダメなんです。
そこで、きっとファイルが「処理中」or「開いている」といった情報がどこかに残っていて、削除できない状態にあるのではないかと思っています。
でもOpenステートメントのCloseのようなコマンドが書庫解凍の時には何になるのかがよくわかりません。
下手な説明ですみません。

補足日時:2001/03/23 16:06
    • good
    • 0

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