- - PR -
ファイルコピー中のプログレスバー表示について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-31 11:29
こういうことを聞くから不安なのですが。。。おそらく、ある程度実装がすんでいて、その中でプログレスバーを表示する処理を追加しようとしていると思いますが、どのように実装していますか?あるいは、どのように実装しようとしていますか? パーセンテージの計算方法を聞く、ということが、「処理済みのバイト数がわからない」ということと判断しています。パーセンテージの計算式がわからない、ということではないですよね?処理済みのバイト数がわかっているなら、パーセンテージを出すなど、現在値を全体値で割って100掛けるなんてことは、小学校の算数で習うはずですから。 計算式がわからないというのは論外として、処理済みのバイト数については、どのように実装しているかで変わりますから、「このようにしています」ということを示さなければ、一般論でしか答えられません。 その中で、一部のAPIコールや、System.IO.File.Copyメソッドを使っているなら、コピー処理が終了するまでメソッドから抜けられないので、「処理済みのバイト数がいくらか」を知ることができません。イコール、プログレスバーを表示することができません。また、APIコールでも、SHFileOperationを使うなら、OSが勝手にプログレスダイアログを表示してくれます。 Cになりますが、『できるプログラマになるための APIで学ぶWindows徹底理解』の、P56にプログレスバーが表示可能な「少しずつコピーする」方法について例題があり、上記URLからプログラムがダウンロードできます。 | ||||||||
|
投稿日時: 2004-05-31 14:11
プログレスバーの使い方を主眼に返事を書きましたので、Chataさんが何をどういう方法でコピーをされようとしているのかは、深く考えていませんでしたが.... コピーの方法による対応は、他の方がより詳しくお答えになっている通りだとおもいます。 単純なコピーではなく、何らかの理由で(例えば何かの変換を行いながら)地道に読み書きして自力で別ファイルにコピーする。または、複数のファイルをコピーする際ファイルサイズの合計を取っておいて、コピーの済んだファイルサイズの比率(%)をvalueにセットする(進み方がファイルサイズによって跳びますが)等なら有効かと思います。(前レスの際は、この二つぐらいを念頭に置いて書きました) | ||||||||
|
投稿日時: 2004-05-31 15:01
いろいろと教えて頂き、誠に有り難うございました。
大変恥ずかしい話、
というのも知らなかった次第です。 現在は、ShFileOperation()API関数で処理しているのですが、 意味も理解せず、何かの本に掲載されていたのをそのまま使用して いたため、小変更が効かずプログレスバーを使用した他の方法で 出来るのか知りたくて問い合わせをさせて頂きました。 従いまして、紹介して頂いた 『できるプログラマになるための APIで学ぶWindows徹底理解』 を購入して、勉強しようと思います。 本当にいろいろ有り難うございました。 | ||||||||
|
投稿日時: 2004-05-31 15:02
いろいろと教えて頂き、誠に有り難うございました。
大変恥ずかしい話、
というのも知らなかった次第です。 現在は、ShFileOperation()API関数で処理しているのですが、 意味も理解せず、何かの本に掲載されていたのをそのまま使用して いたため、小変更が効かずプログレスバーを使用した他の方法で 出来るのか知りたくて問い合わせをさせて頂きました。 従いまして、紹介して頂いた 『できるプログラマになるための APIで学ぶWindows徹底理解』 を購入して、勉強しようと思います。 本当にいろいろ有り難うございました。 | ||||||||
|
投稿日時: 2004-05-31 15:54
ちょっと待ってください。そういう理由でなら、買う必要はありません。2095+税円は、決して安いとは思いませんし、コピーについてだけなら、たった数ページしかボリュームがありません。また、先にも書いていますが、C言語による方法なので、.NET Frameworkで行うなら、かなり「???」なことになります。記事も、「時間がかかる処理中はメッセージ処理ができず、アプリケーションが黙りになる。それを回避する方法」として書かれているので、プログレスバーや経過量を表示するようにはなっていません。それらは自分で考えなければなりません。 プログラムを参考にするだけなら、『apip3.lzh』をダウンロードすれば事足ります。これから.NET Frameworkを使用するなら、不要とまではいいませんが、特に知らなくても不自由はしないので、プログラムをダウンロードして、それを解読して、その上で必要だと思ったら買う、位でいいと思います。 #『上記URLからプログラムがダウンロードできます』というのは、 #『特に買うまでもない』ということを含んでいました。 |