- - PR -
tar32.dllについて
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-13 14:13
そういうことは最初から書いとけよ。な! カレントディレクトリって決まりきった場所じゃないけど大丈夫かね? どこをカレントディレクトリだと思って確認したか知らないけど全ハードディスク検索くらいはしているだろうな? | ||||||||||||
|
投稿日時: 2006-12-13 14:31
そうだったのですか。 そういうことは(以下ぶさいくろうさんが先に書いてくださっているので略)。 ということで、自分でも少し調べてみました。またまたC#で恐縮ですが。 (こういう風に興味を持ったことは自分で色々調べてみると知識に繋がると思います)
これで実行してみて、カレントディレクトリに展開されていることを確認してみたのですが、 1coさんはどうやって確認されたのでしょうか。 あと気づいたのは、Hongliangさんがおっしゃられている「呼び出し先で変更される文 字列については、System.Text.StringBuilder クラスを利用します」は szOutput を指すと思うのですが、1coさんの定義だと szCmdLine になっています ね。その辺は影響ないでしょうか(実行時にバッファを指定していないので今は問題になっ ていないだけかもしれません)。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2006-12-14 15:00
ぶさいくろうさん、ぽぴ王子さん
ご返信ありがとうございます。 こちらからの返信が大変遅れまして申し訳ありません。 また、おふたりにはわたしが言葉足らずだったために大変ご迷惑をお掛けしました。 併せてお詫び申し上げます。
最初、カレントディレクトリは.tarファイルの存在するディレクトリだと思い、 そこに展開されるものと思っておりましたが展開されないため、 実行可能ファイルのあるディレクトリを確認しましたがそこにも出力されておらず、 全ハードディスク検索もしましたがどこにも存在しませんでした。 こちらの件につきましてもご報告が漏れておりました。。 本当に度々申し訳ありません。
szOutputをSystem.Text.StringBuilderに変更し実行してみましたが、 szOutputがStringの場合と結果は変わらず、 処理自体は正常終了(戻り値0)しますが、ファイルが展開されません。 自分なりにいろいろ調べたり試してみてはいるのですが、 自分は本当に根本的にいろいろ理解していないと思うので、 みなさまから教えていただいた情報をもとに調査を続けたいと思います。 | ||||||||||||
|
投稿日時: 2006-12-14 18:23
1coです。
引き続き調査中ですが、気づいたことがあるので経過報告します。 Tar(-x "c:/test/xxx.tar") を実行すると、実行可能ファイルのあるディレクトリに -c/test/extract というディレクトリが作成されていることがわかりました。 調査するなかで、展開先を指定する目的でコードを Tar(-xvf C:/test/xxx.tar -c c:/test/extract) としたことがあるのですが、スフレさんのご指摘にもあるとおり、 このコードでは-cによりディレクトリが作成されることになります。 その後コードを Tar(-x "c:/test/xxx.tar") に戻したのですが、 Tar(-xvf C:/test/xxx.tar -c c:/test/extract) を行った影響なのか、 実行後常に実行可能ファイルのあるディレクトリに -c/test/extract というディレクトリが作成されるようになってしまった模様です。 これは、引数_szCmdLineが正常に渡らなくなってしまった、ということでしょうか。 引き続き調査します。 (なにかまたとんちんかんな発言をしてしまっていたらご指摘ください。) | ||||||||||||
|
投稿日時: 2006-12-14 18:49
まず、記事の中でダブルクォーテーションの位置がバラバラというかめちゃくちゃなのですが、
これは大丈夫でしょうか。コンパイルすら通らなくなってしまっていませんか? たぶんファイル名をダブルクォーテーションで囲んでいるだけで、Tar() の中も実際は囲ま れていると解釈していますが。 × Tar(-x "c:/test/xxx.tar") ○ Tar("-x ""c:/test/xxx.tar""") という感じかな。 コマンドラインとしては前の私の投稿の通り -x ""c:/test/xxx.tar"" -o ""c:/test/"" のような感じでいけるのではないでしょうか。 (このコマンドラインで tar32.dll から指定したディレクトリに解凍できることは確認しています) これで試してみてください。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2006-12-14 19:31
ぽぴ王子さん
大変申し訳ありません。 記事への記入誤りでした。 ソースコードをコピー&ペーストすべきでした。 実際のコードは
でした。 本当に度々つまらないことでお手間を取らせまして申し訳ありません。。 また、ご指摘いただいたとおりソースを
としてみましたが、 ・処理:正常終了 ・結果:ファイルの展開はされず、c-/test/extractディレクトリが作成される。 という状況でした。 | ||||||||||||
|
投稿日時: 2006-12-15 09:55
まずは問題の切り分けをしてみましょうか。
(原因究明の第一歩です)
問題点その1 処理が正常終了ということは、どこかにファイルが展開されていていいはずだが、カレント ディレクトリには存在しない(のですよね?) 私のコードで MessageBox.Show(Environment.CurrentDirectory); というのがありましたが、これで展開時点のカレントディレクトリを調べてみるのはどうでしょ うか。コマンドラインは間違っていないと思いますので、もしかするとカレントディレクトリだと 『思っている』ところが実は違っていて、別のディレクトリ(実際のカレントディレクトリ)に解 凍されてしまっているのかもしれません。 というか -o オプションで解凍先を指定する予定なのだと思いますので、カレントディレク トリ云々はあまり意味がないことかもしれませんが(実際に解凍されているのかどうかを 検証する上では重要ですけど)。 問題点その2 c-/test/extract ディレクトリを作っているのは誰なのか。 コマンドラインでは c-/test/extract などという文字列はまったく指定しないわけです よね。それでそんなディレクトリが勝手に作られてしまうというのであれば、それはそれでま ずい状況下もしれません。もし本当に tar32.dll が作っているのであればバグレポート を送ったほうがいいかもしれませんしね。 検証方法として、実行前に「c-/test/extract」ディレクトリを削除してから実行してみ ても、勝手に作られたりするでしょうか。Tar の前後に MessageBox などをはさんで 一旦動作を止めてみて、その時点で本当に tar32.dll が作っているのか( Tar を実 行した時点で作成されているのか)を見てみる必要があると思います。 濡れ衣だったら tar32.dll に謝らないといけないですし _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2006-12-15 11:03
ぽぴ王子さん
ご回答ありがとうございます。 【問題点1について】 カレントディレクトリを調査すべくコードを以下のとおり変更して実行してみました。
メッセージボックスには --------------------------- winApp for Test --------------------------- 戻り値 = 0 current dir = C:/source.net/winApp for Test/bin --------------------------- OK --------------------------- と出力されました。 C:/source.net/winApp for Test/bin は実行可能ファイルの存在するディレクトリです。 【問題点2について】
実行前には必ず「c-/test/extract」ディレクトリを削除していますが、 実行後必ずC:/source.net/winApp for Test/bin配下に作成されます。 エクスプローラにてC:/source.net/winApp for Test/binをみながら実行したところ、 実行直後に「c-/test/extract」ディレクトリが作成されますし、 「c-/test/extract」ディレクトリのタイムスタンプを見ても実行日時と同じです。
そうですね、自分の行った処理をもう一度整理して、 やはりTar32.dllに問題があるのでは、と判断した場合に作成者の方にご連絡差し上げたいと思います。 |