当前位置:主页>仓库管理软件> 列表

用THttpGet 下载多个文件的问题, 请各位朋友都进来

销售管理软件版1楼: 请问如果用THTTPGET连续下载多个文件.
我从TStringList 读出MYURL, MYFILE, 然后用
for i := 0 to N do
begin
HTTPGet1.WaitThread := true;
HTTPGet1.URL := MYURL;
HTTPGet1.FileName := MYFILE;
HTTPGet1.GetFile;
end;
这样可以, 但是线程被占用, 程序其他地方没响应, 只能等着它下载完.

我后来在HTTPGET1的下载完毕事件里添加如下过程:作递归调用.
procedure TDownloadForm.DownNext(filelist : tstringlist; Current: Integer);
var
itemcount : Integer;
begin
if Current>= filelist.count then exit;

showmessage(''download next file''); <<<<<<可以正常运行到这里.
HTTPGet1.WaitThread := false;
HTTPGet1.URL := MYURL;
HTTPGet1.FileName := MYFILE;
HTTPGet1.GetFile;

CurrentItemNum := CurrentItemNum + 1;
end;

递归没有成功, 请问各位有什么看法.....

谢谢了, 不知道的朋友, 帮顶一下帖子, 也送分感谢!

2楼: 送分我喜欢[:D]进销存表格模板

3楼: 哈哈,WaitThread := true,那是要等待线程下载结束,GetFile才会返回的,其他地方自然没反应的;而在HTTPGET1的下载完毕事件里添加如下过程:作递归调用.,那自然也是不行的,因为一来HTTPGET的下载线程是结束后自动释放的(FreeOnTerminate = True),二来在OnThreadDone事件中,线程对象还不是nil,而GetFile中有判断线程对象是否nil,只有是nil还没创建线程对象时,才会创建线程对象并进行下载的
要下多少个文件,就动态创建多少个HTTPGET组件吧,再不,就自己动态创建多个THTTPGETThread线程来下载文件吧

4楼: 动态创建httpget会stack 溢出...

5楼: 谁给个一个接着一个下载, 而程序有响应的代码... 500分... [:D]
谢谢了.. 头晕了...

6楼: 多人接受答案了。

销售管理软件版7楼: 谢谢了, 不知道的朋友, 帮顶一下帖子, 也送分感谢!

楼主真幽默,又做了回傻瓜,呵呵