ProgressBarのMax値の推定

解決


amide  2004-10-22 22:11:34  No: 11489

時間のかかる処理(データベースのバックアップ)の進行状況をProgressBarで表示したいのですが、Max値はどう推定すればよいのでしょうか?
WebのDownloadのやCD-Rの書き込みなどで見かけるProgressBarはMax値をどのように取得しているのでしょうか?
バックアップはTransact-SQLのBACKUP を使っています。(Win-Xp,D7-pro,MSDE2000)

 ADOQuery1.SQL.clear;
 ADOQuery1.SQL.add('BACKUP DATABASE 〜);
 ADOQuery1.ExecSQL;


TtPIPICH  2004-10-23 02:05:13  No: 11490

>WebのDownload
おそらく容量を取得し、
Max=全体の容量
Position=ダウンロードした容量
です。

forでStringListを処理する場合なんかは、

ProgressBar1.Max:=SL1.Count-1;
for i:=0 to SL1.Count-1 do
begin
//処理
ProgressBar1.Position:=i+1;
end;

とかです。


bob  2004-10-26 02:42:59  No: 11491

今回アドバイスではなく、単なるグチ--;

エクスプローラーでファイルコピーの想定時間とかも、
ちゃんとやってくれないかなぁ〜当てにならなさすぎ。

P.S.
IEのダウンロードはやっまり当てにならないけど、普通のソフトは
MAX=ファイルサイズ
Position=ダウンロードした容量
時間=物によるけど大抵は、
直前のダウンロードバイト数(ビット単位もあり)/(ファイルサイズ  −  ダウンロードした容量)×sec
だと思います。(計算した訳じゃないから式があってるか不明ぉ)


TtPIPICH  2004-10-26 03:16:56  No: 11492

ProgressBar1.Position:=i+1;

ProgressBar1.StepIt;

ProgressBar1.StepBy(1);
等とすることが多いようです。


amide  2004-10-26 18:13:12  No: 11493

Max=ファイルサイズとしてもT-SQLのBACKUPをBlackBoxで使っていたらPosition値がとれないですね。バックアップ方法を変えないと・・・

TtPIPICHさん、bobさん、貴重なアドバイスをありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加