自分なりに書いてみたのですが数GBの巨大なファイルを指定すると無限ループしてしまいます。
数百MBまでは大丈夫なようです。
そもそもrepeatを使って計算してるのがおかしいような気がするのですがどうなんでしょう?
数学が苦手なのでプログラムでごまかして作った感じなのですが・・・
わかる方教えてください!
#include "hspinet.as" netinit dim sizecash,3:time="計測中" neturl"http://fs.idownloadlink.com/files/9/xfzlhyupziyzbs/" file="nonnon02200.jpg" ;neturl"https://yoctfs.jp/res/box-l-3tjbnbzwhtosfj4veqk4mk2rtq-1001?account=storage&download=utf-8&" ;Yahooボックスより2.7GB ;file="expires=1381836260&uid=be952f12-3951-49c5-ab71-b4b1dfee80d8&signature=Y2ZhYmZlNjExYTA1ZDk0YzQ2MGI0OWU1ZjRhOTViZWEzMjdhNzY4OQ--" netfileinfo info,file split info,"Content-Length: ",i,info:split info,"\n",info:fsize=int(info) netdlname file netrequest file repeat await 16 redraw 0 color 255,255,255:boxf gosub*dlchk:ms+1 pos 10,10:color:mes ""+int(per)+"% 完了" pos 10,40:mes time pos 10,80:mes ""+size/1048576+"MB/"+fsize/1048576+"MB" redraw 1 if comp=1:break loop stop *dlchk if ms=60{ ms=0:exist file:size=strsize:per=double(size)/double(fsize)*100:sizecash(n)=size-size_:size_=size:n+1:if n=3:n=0 avesize=0:repeat 3:avesize+sizecash(cnt):loop:avesize/3 if avesize>0{ repeat if size+avesize*cnt>=fsize:time=cnt:break;※問題の場所? await 0 loop if int(time)>=600:hour=time/600:min=double(time)/600:min-hour:min*60:min=int(min):time=""+hour+" 時間 "+min+" 分":else:if int(time)>=60:min=time/60:sec=double(time)/60:sec-min:sec*60:sec=int(sec):time=""+min+" 分 "+sec+" 秒":else:;time=""+time+" 秒" } } netexec res if res > 0 : comp=1 if res < 0 : neterror estr:dialog "ERROR "+estr:end return