- 締切済み
UNLHAで解凍後に削除したい
お世話になります。VB6.0でUnlha32を使用してLZHファイルを解凍後、LZHファイルを削除する処理を作ってみたのですが、LZHをいざKILLステートメントで削除しようと思うと、”パスが無効”と出てしまって削除できません。 ret=Unlha(・・・) if ret = 0 then ChDir LZHファイルがあるフォルダ Kill LZHファイル ← ここでエラーが出る end if こんな感じなのですが、Killの前で何かやっておかなければならないのでしょうか? 例えばNothing や Closeのように 処理と切り離すコマンドが必要なのかな?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- KojiS
- ベストアンサー率46% (145/312)
-jsbスイッチは指定していますよね?
- SuperNova
- ベストアンサー率66% (2/3)
LZHファイルが「別のドライブに存在」するのではないでしょうか? ChDirでは「そのドライブのフォルダが変更されるだけ」で,ドライブは変更しません. そして「フォルダの変更状態はドライブ毎に独立して存在する」のです. ret=Unlha(・・・) if ret = 0 then ChDrive LZHファイルがあるドライブ ChDir LZHファイルがあるフォルダ Kill LZHファイル end if こんな感じでいかがでしょうか? おそらくヘルプを読まれたようですね. KILLステートメントの例が,フルパス指定ではなかったのかもしれません. しかし,私もKojiSさんのアドバイス通り,KILLステートメントにフルパス指定される方がベターかと思います. がんばってください.
- KojiS
- ベストアンサー率46% (145/312)
なぜ Killでフルパスを設定しないかが疑問です。一度フルパスで指定してみてください。それでエラーになる場合は、フォルダかファイル名が間違っています。
補足
ごめんなさい、説明が足りませんでした。 フルパスでも試してみましたがダメでした。 あるマシンではエラーが出ないのですが、処理スピードが遅いマシン(Pentium133)だとダメなんです。 そこで、きっとファイルが「処理中」or「開いている」といった情報がどこかに残っていて、削除できない状態にあるのではないかと思っています。 でもOpenステートメントのCloseのようなコマンドが書庫解凍の時には何になるのかがよくわかりません。 下手な説明ですみません。
補足
解凍は下記の通りでやってます。 ret = Unlha(Me.hWnd, "e -ngm """ & FreezeFile & """ """ & workPath$ & """ ""*.*""", Buff, 64000) 成功すれば ret=0 ですよね。 皆様、色々ご回答ありがとうございました。 結局、イージーミスであることが発覚しました!! 元々、解凍しているファイルはCD-ROMに焼いたものを手で固定フォルダへコピー後、解凍プログラムを起動していたものであり、つまり!そのままだと「読み取り専用」の属性が付いたまま削除処理をしようとしているのですね。 本当にごめんなさい。(こんな簡単なことがわかるのに丸一日かけてしまいました(TT)) 無事解決しました。