indy GET下载速度

时间:2010-12-11 11:04:44

标签: delphi lazarus indy10 idhttp

欢迎,

我必须使用indy http get compontent在我的应用程序中创建有关下载速度的信息的标题。

在我看来,我找到了简单的解决方案。

在onwork活动中,我将获得下载(大小)的实际进度,并将其与之前的阅读进行比较。 (例如每5秒钟)。 curent size减去之前的(5秒钟,存储在全局变量中)除以5秒* 8,我将获得速度。 如果实际尺寸等于之前,则速度始终为0.

所以我想开始编码,但我发现了一个叫做odwork的简单函数的问题。

procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
  begin
    showmessage('hello im herre');
end;  

问题是,该功能不被称为...... 我不知道为什么。

我正在下载100 MB的文件,我无法看到任何showmessage ......

有什么想法吗? 此致

3 个答案:

答案 0 :(得分:2)

只有事先调用了连接的BeginWork()方法才会触发OnWork ...事件。 Indy的许多读/写方法都不会自动调用它。但是,TIdHTTP使用TStream对象读/写请求/响应正文数据,并且连接的读/写TStream方法在内部调用BeginWork(),因此您肯定会在HTTP操作期间触发OnWork ...事件。

答案 1 :(得分:0)

您是否也将httpwork分配给组件? onprogress或onwork无论它叫什么?

此外,使用标签,而不是在您点击之前不会返回的模态组件,因为这可能会中断下载流程。

答案 2 :(得分:0)

我不得不说你的HTTPWork事件没有挂钩到组件中。如果表单上有HTTP组件,请打开属性并双击OnWork事件,然后输入ShowMessage ...它应该显示。