用NMHTTP显示页面下载进度?????????(100分)

  • 主题发起人 主题发起人 hmf
  • 开始时间 开始时间
H

hmf

Unregistered / Unconfirmed
GUEST, unregistred user!
用NMHTTP获取一个登录后的网页内容。用进度条显示页面下载进度呢?我是这样写的

*****************************************************************************************************
//提交登录数据后获得登录成功后的页面
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.Enabled:=false;
try
nmhttp1.post('http://www.123.net/login.asp','login.txt');//login.txt文件中有登录的用户名和密码
finally
button1.Enabled:=true;
end;
end;

......

procedure TForm1.NMHTTP1PacketRecvd(Sender: TObject);
BEGIN
ProgressBar1.Position:=round(nmhttp1.BytesRecvd / nmhttp1.Bytestotal)*100
END;

......
*******************************************************************************************************

运行后程序如果不用进度条显示的话可以正常下载页面
而加了进度条显示代码后却无法正常显示,提示出错,原因是nmhttp1.Bytestotal为0这是为什么?

请问该怎么解决?怎么才能获知页面的大小?
 
页面大小并不一定能够获知。看看delphi6自带的例子就考虑了这种情况
 
那怎么在过程中显示完成状况呢?用IdHTTP说明也行
 
ProgressBar1.Position:=round((nmhttp1.BytesRecvd+1) / (nmhttp1.Bytestotal+1))*100

 
yylei老兄,你觉得这样可以吗?不要想当然好不好
哈哈!老实说刚看到你这个答案我都[:D]这样
问题是根本nmhttp1.Bytestotal就一直是0啊。对asp生成的页面NMHTTP无法取得页面的尺寸
 
在d6的例子里,如果Bytestotal=0,就只显示BytesRecvd的数值,而不显示进度
 

Similar threads

后退
顶部