indy GET下载速度
欢迎,
我必须使用 indy http get 组件在我的应用程序中创建包含有关下载速度信息的标题。
在我看来,我找到了简单的解决方案。
在工作活动中,我将获得下载的实际进度(大小)并将其与之前的阅读进行比较。 (例如每 5 秒一次)。当前大小减去先前的大小(5 秒eariel,存储在全局变量中)除以 5 秒 * 8,我将获得速度。 如果实际大小等于先前的值,则速度始终为 0。
所以我想开始编码,但我在名为 odwork 的简单函数中发现了问题。
procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin showmessage('hello im herre'); end;
问题是,该函数没有被调用...... 我不知道为什么。
我正在下载 100 MB 的文件,但看不到任何显示消息...
有什么想法吗? 问候
Welcome,
I have to create caption with information about downloading speed in my application using indy http get compontent.
In my mind i found simple solution.
At onwork event i will get actual progress of downloading (size) and compare it with previous reading. (for example every 5 seconds). curent size minus previous (5 seconds eariel, stored in global var) divide by 5 seconds * 8 and i will get speed.
If actual size is equal previous then sped is always 0.
So i want start codding, but i found problem in simple function called odwork.
procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin showmessage('hello im herre'); end;
Problem is, that function isnt called...
I don't know why.
I'm downloading 100 MB file, and i cant see any showmessage...
Have any idea ?
Regards
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
仅当事先调用了连接的 BeginWork() 方法时,才会触发 OnWork... 事件。 Indy 的许多读/写方法不会自动调用它。但是,TIdHTTP 使用 TStream 对象读取/写入请求/响应正文数据,并且连接的读/写 TStream 方法确实在内部调用 BeginWork(),因此您肯定会在 HTTP 操作期间触发 OnWork... 事件。
The OnWork... events are only fired if the connection's BeginWork() method has been called beforehand. Many of Indy's reading/writing methods do not call that automatically. However, TIdHTTP reads/writes request/response body data using TStream objects, and the connection's read/write TStream methods do call BeginWork() internally, so you will definately get OnWork... events fired during HTTP operations.
您是否也将 httpwork 分配给该组件? onprogress 或 onwork 无论它叫什么?
另外,请使用标签,而不是单击后才会返回的模态组件,因为这可能会中断下载流程。
Do you also assign the httpwork to the component? onprogress or onwork whatever it is called?
Also, use a label, not a modal component that will not return till you click, since that might interrupt download flow.
我不得不说你的 HTTPWork 事件没有挂接到组件中。如果表单上有 HTTP 组件,请调出属性并双击 OnWork 事件,然后放入 ShowMessage...它应该会显示。
I'd have to say that your HTTPWork event is not hooked into the component. If you have the HTTP component on the form, bring up the properties and double-click on the OnWork event and then put in the ShowMessage...it should show up.