欢迎,
我必须使用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 ......
有什么想法吗? 此致
答案 0 :(得分:2)
只有事先调用了连接的BeginWork()方法才会触发OnWork ...事件。 Indy的许多读/写方法都不会自动调用它。但是,TIdHTTP使用TStream对象读/写请求/响应正文数据,并且连接的读/写TStream方法在内部调用BeginWork(),因此您肯定会在HTTP操作期间触发OnWork ...事件。
答案 1 :(得分:0)
您是否也将httpwork分配给组件? onprogress或onwork无论它叫什么?
此外,使用标签,而不是在您点击之前不会返回的模态组件,因为这可能会中断下载流程。
答案 2 :(得分:0)
我不得不说你的HTTPWork事件没有挂钩到组件中。如果表单上有HTTP组件,请打开属性并双击OnWork事件,然后输入ShowMessage ...它应该显示。