HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0817
WHOSプログレスバー 進行状況10解決


WHOS

リンク

2011/8/17(Wed) 13:01:32|NO.40667

プログレスバーでダウンロード進行状況の表示に成功したのですが
分からない事があるので質問させて頂きます。
50MB程度の大きなファイルになると途中の30%辺りで-30%と表示され
29%>>28%>>27%...................と言う形になって途中でダウンロードが止まってしまいます。
アドバイスを教授頂ければと思っております。


#include "hspinet.as" DOWNLOAD = "" netinit SIZES = getpath(DOWNLOAD,8) header = "" neturl ""+getpath(DOWNLOAD,32) netfileinfo header,""+SIZES notesel header FEW = "" repeat notemax noteget FEW,cnt if instr(FEW,0,"Content-Length: ")=0:break loop filesize=int(strmid(FE,strlen("Content-Length: "),256)) netdlname ""+SIZES neturl ""+getpath(DOWNLOAD,32) netrequest ""+SIZES winobj "msctls_progress32", "", , $50000000, 200, 20 hProgress = objinfo(stat, 2) repeat exist SIZES sendmsg hProgress, $402,(100*strsize/filesize) title ""+100*strsize/filesize+"%" netsize size : netexec res loop



この記事に返信する


backdrop

リンク

2011/8/17(Wed) 13:08:42|NO.40668

17行目致命的におかしいぞ



WHOS

リンク

2011/8/18(Thu) 20:02:03|NO.40686

>>backdrop
ご指摘ありがとうございます。
ここにソースを書く際に誤って記述してしまったものです。



backdrop

リンク

2011/8/18(Thu) 22:51:54|NO.40690

でも修正ソース全部載せてもね。
修正部分だけ教えてくれれば確認できます

と言うより、最初からコピペしたほうが手っ取り早いのでは?



WHOS

リンク

2011/8/19(Fri) 19:57:06|NO.40699

>>backdrop
ご指摘ありがとうございます。
確かに必要のないソースの削減とコピー&ペーストにしとくべきでした。すいません。



backdrop

リンク

2011/8/19(Fri) 20:48:53|NO.40701

まあいいけど、とりあえず修正ソース上げてくれないと回答できません。



WHOS

リンク

2011/8/19(Fri) 23:06:56|NO.40702

あ、申し訳ありません。

17行目を

filesize=int(strmid(FEW,strlen("Content-Length: "),256)) </per> に修正です。



backdrop

リンク

2011/8/20(Sat) 00:36:26|NO.40704

やってみたが50MBでもとりあえず問題なく動くぞ。
最悪の場合回線依存ってこともありうる。



WHOS

リンク

2011/8/20(Sat) 01:26:00|NO.40705

>>backdrop

確かにその可能性が有り得そうですね。
私はADLSで最高でも通信速度200KBほどしか出せないので・・・。

容量などの問題ではなくダウンロード中にかかっている
時間が問題なのかなって思います。



アイガモ

リンク

2011/8/20(Sat) 13:15:18|NO.40706

int型の許容範囲を超えているからです。
int型の許容範囲は-2147483648〜2147483647です。
なので、

title ""+100*strsize/filesize+"%"
で100倍したときに2147483647を超すとおかしな数字が表示されます。

そこで、

repeat exist SIZES sendmsg hProgress, $402,(100*strsize/filesize) title ""+100*strsize/filesize+"%" netsize size : netexec res loop
の部分を

percent = 0 repeat exist SIZES percent = int(double(strsize) / filesize * 100) sendmsg hProgress, $402,percent title ""+percent+"%" netsize size : netexec res loop
のようにすればうまく動くと思います。



WHOS

リンク

2011/8/20(Sat) 18:30:22|NO.40725

>>アイガモ
回答ありがとうございます。
int型にそんなものがあったとは全く持って自分の知識不足でした。
お陰さまで解決しました。ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.