出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

処理の順番がおかしい   ozawaさん [2004/10/07 21:21:15] [4682]
  Re:処理の順番がおかしい   Lightningさん [2004/10/15 16:07:13] [4690]
    Re:処理の順番がおかしい   ozawaさん [2004/10/18 19:39:30] [4694]

[4682] 処理の順番がおかしい
投稿者:ozawaさん 2004/10/07 21:21:15
こんにちは、ozawaと申します。

ASPでWebシステムを作っているのですが、タイトルにあるように処理がどうしてもうまくいかないのでご教授ください。

あるフォルダの中に複数のフォルダがあり、その中にはファイルを1つずつ圧縮した圧縮ファイルがあります。
これらの圧縮ファイルを一つずつ解凍(解凍先は同じフォルダ)し、解凍が成功したら元の圧縮ファイルを削除します。
そしてそのしょりが全て終わったら一番上位のフォルダを圧縮します。

こうして最終的にできた圧縮ファイルの中は、元のフォルダ構成で、圧縮ファイルではなく解凍されたファイルだけが存在するはずなのですが、なぜか元の圧縮ファイルが混在しています。なお、解凍されたファイルは全て揃っています。圧縮ファイルの方はフォルダ単位である場合とない場合があります。

プロセスの順番が無視されていると推測し、処理中にフォルダを監視していたら処理のかなり初期の段階(最初の解凍が始まる前)で最終的に作るはずの圧縮ファイルの作成を開始していました。
こういったようなコードで書いた順番を無視する状態を改め、意図どおりの順番に処理させるにはどうしたらよいでしょうか。
圧縮ツールの実行にはBASP21を使用しています。また、圧縮ツールはUNLHA32.dllを用いた圧縮ツール(製作者様のコメントではDLLにコマンドを渡しているだけとのことです)を使っています。

どうぞよろしくお願いします。

[4690] Re:処理の順番がおかしい
投稿者:Lightningさん 2004/10/15 16:07:13
ちょっと疑問があるっすよん
個々のファイルの解凍の完了は監視してますよね?
最終的に作成する圧縮ファイルの作業を始める前に解凍が完了している(元の圧縮ファイルが無い)ことは確認していますよね?

順番がどうこうではなく、この辺りの確認を怠っているように思えます。
確認していれば先に圧縮することはないかと・・・
順番はソースに書いたとおりに行くもんですが、きちっと確認しないと
1番開始→2番開始→3番開始→1番終了→4番開始→3番終了→4番終了→2番終了
とかって動き方もあり得ると思いますし
4番目に全部圧縮してると仮定してこれだと2番は途中ですよね。圧縮完了時には・・・

[4694] Re:処理の順番がおかしい
投稿者:ozawaさん 2004/10/18 19:39:30
Lightning様どうもありがとうございます。

> ちょっと疑問があるっすよん
> 個々のファイルの解凍の完了は監視してますよね?
> 最終的に作成する圧縮ファイルの作業を始める前に解凍が完了している(元の圧縮ファイルが無い)ことは確認していますよね?

質問をした段階では最初に解凍を行う(と思われる)フォルダと
最終的に圧縮ファイルができるフォルダを両方開いて監視して
いたのですが、解凍が始まらないうちに最後の圧縮ファイル
作成を始めてしまいました。
原因と思われるのは・・・下にある通りです。

> 順番はソースに書いたとおりに行くもんですが、きちっと確認しないと
> 1番開始→2番開始→3番開始→1番終了→4番開始→3番終了→4番終了→2番終了
> とかって動き方もあり得ると思いますし
> 4番目に全部圧縮してると仮定してこれだと2番は途中ですよね。圧縮完了時には・・・

自分達の馬鹿さ加減をさらすようで大変言いにくいんですが
次の日の朝多少冷静になってコードを見直してみたところ、
以下のような事態が判明しました。

この処理では大ループがあり、その中に小ループがあり、そして
大ループが終わったところで圧縮をします。ところが、圧縮処理が
小ループ終了直後に書いてありました。つまりは、小ループ完了後に
毎回毎回圧縮を行っていたのです。そのため、圧縮ファイルと
解凍されたファイルが混在していたのです。
圧縮処理を大ループの外に出したら質問した現象は収まりました。

真っ先に最終圧縮ファイルを作り始めてしまったのは、監視して
いたフォルダとは別のフォルダから解凍を開始するということが
おこっていたのかも、と推測されます。

ご回答ありがとうございました。
また、大変馬鹿みたいなことで慌てて質問ををしてしまい、
申し訳ありませんでした。



TreeBBS For ASP V.0.1.3
Program By YasNet