- - PR -
tar32.dllについて
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-12 21:34
お世話になります。
VB.net(WinXP/VS2003/.net Framework1.1)にて .tarファイルを解凍するプログラムを作成しています。 過去の投稿を検索して、tar32.dllを使用するところまで調べましたが、 以下のコードを実行すると、戻り値32792が返され、処理が正常に終了しません。 なにが問題なのか、教えていただけますと幸いです。 また、.tarファイルの解凍について、解凍先を指定する際、 tar xvf .tarファイル名 -c 解凍先Dir と指定するように記憶しておりますが、 このように引数_szCmdLineに指定すると 指定したディレクトリに解凍ファイルが作成されますでしょうか? どなたかご存知の方がいらっしゃいましたら 何卒ご教授よろしくお願いいたします。
| ||||||||||||||||
|
投稿日時: 2006-12-12 22:38
コードを見た感じ、特に間違いってのはなさそうですね。
// Tar 関数は SetLastError しなかったような気がするけど。 返値の意味は unlha32.dll 付属の API.TXT をご参照いただくとして。 LPSTR、つまり呼び出し先で変更される文字列については、System.Text.StringBuilder クラスを利用します。この辺の情報も MSDN に載っていますので、相互運用マーシャリングとかなんとかそんな感じの記事を探して読んでおいて下さい。 で、これを使って処理結果を文字列で受け取ってみたらどうでしょうか。
こっちについては、Tar32.dll 付属の Tar_cmd.txt に記述されているのでご参照下さい。cmd_tare.txt の方なら英語ながらコマンド例も挙げられています。 | ||||||||||||||||
|
投稿日時: 2006-12-13 00:21
http://www.kmonos.net/lib/
「UnDller」でまずは引数が正しいかを確認すると幸せになれるかも ただ、 コマンドが正しいかどうかの確認はしていないので、 コマンド引数が悪いのか別の部分が悪いのかの判断には便利だと思って脊髄反射でレスつけてみました | ||||||||||||||||
|
投稿日時: 2006-12-13 12:05
Hongliangさん、鶴屋さん
ご回答ありがとうございます。 返信が大変遅れまして申し訳ありません。 まず、鶴屋さんからご紹介いただいた「UnDller」にて引数が正しいかどうか確認してみました。 DLL:tar32.dll API:tar Command:-x c:/test/xxx.tar および Command:-xvf C:/test/xxx.tar -c c:/test/extract 結果どちらも「返値はOK」とメッセージボックスが表示されましたので、 引数については問題ないと思われます。 次に、Hongliangさんからご指摘いただいたとおり、 ソースを以下のとおり変更し実行してみました。
結果、戻り値は0でしたので、処理は正常に終了しました。 しかし、UnDllerでも、上記コードを実行した際も、 指定したディレクトリにファイルが展開されません。 (xxx.tarには.txtファイルが7件入っています。) これはなぜなのでしょうか? 度々申し訳ありませんが、ご教授いただけますと幸いです。 自分でも現在Hongliangさんから教えていただいた情報を確認中ですが、 なにかわかることがありましたらよろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2006-12-13 12:42
一般的に、tar の -c は「アーカイブを作る」という意味です。
tar32.dll に cmd_tar.txt というドキュメントが付いてるはずですが、そちらに目を通されましたか? | ||||||||||||||||
|
投稿日時: 2006-12-13 13:32
スフレさん
ご回答ありがとうございます。 Tar_cmd.txtには目を通しましたが、 「展開先の指定」といったようなオプションはありませんでした。 また、展開先を指定しなかった場合、 デフォルトはどこに展開されるものなのでしょうか? たとえば、commandに"-x c:/test/xxx.tar"と指定した場合 c:/testディレクトリに展開されるのでしょうか? 知識不足で申し訳ありません。。 | ||||||||||||||||
|
投稿日時: 2006-12-13 14:02
スフレさんが仰っているのは「Tar_cmd.txt」ではなく「cmd_tare.txt」のことだと思
います。 Tar_cmd.txt には
とありますし、細かいところまでは書いていませんよね。 1coさんの知りたいことは Tar_cmd.txt ではわからないと思われるので、 cmd_tare.txt を見るようにという話になったのでしょう。 そして cmd_tare.txt では
とありますから、-o オプションで解凍するパスを指定できると思われます。 (というかこちらでやってみたところ、指定したパスに解凍されました)
これは聞く前に実際に試してみることはできますよね(たぶんカレントディレクトリだと思い ます)。
知識不足は誰にでもあることですし、専門外のことであればなおさらです。知識不足そ のものは責められるものではありません(とは言え、世の中には知っていて当然といった事 柄もあるわけですが)。いま知識不足でも、調べれば知識は身につくはずですし。 むしろ「聞く前に自分で行動できるのに何もしない」ことは責められるべきかと思います。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||||||
|
投稿日時: 2006-12-13 14:10
ぽぴ王子さん
ご回答ありがとうございます。
てっきり同じファイルだと思っておりました。 すぐに確認いたします。
言葉足らずで申し訳ありません。 質問する前に試してはみました。 実行の結果、カレントディレクトリにはなにも展開されなかったため、 質問させていただきました。 |