5

欢迎,

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

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

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

所以我想开始编码,但我在名为 odwork 的简单函数中发现了问题。

过程 TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
  开始
    showmessage('你好,我在这里');
结尾;  

问题是,那个函数没有被调用......我不知道为什么。

我正在下载 100 MB 的文件,但我看不到任何显示信息...

有什么想法吗?问候

4

3 回答 3

2

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

于 2010-12-14T19:41:03.677 回答
0

您是否还将 httpwork 分配给组件?onprogress 或 onwork 不管它叫什么?

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

于 2010-12-11T11:26:30.997 回答
0

我不得不说您的 HTTPWork 事件没有与组件挂钩。如果表单上有 HTTP 组件,请调出属性并双击 OnWork 事件,然后输入 ShowMessage...它应该会显示出来。

于 2010-12-15T05:01:40.280 回答