inet控件问题,急急急,可以多给分

梦想成真2003 2003-08-26 08:42:25
我想做一个从ftp下载文件的程序,用inet控件,问题是因为需要下载的文件多,需要做循环,但是我不清楚如何判断当前文件下载完毕,可以进行下一文件的下载,
请高手指明,谢谢
...全文
57 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
imur 2003-08-27
  • 打赏
  • 举报
回复
up
Garfield 2003-08-27
  • 打赏
  • 举报
回复
死循环!?

DoEvents 可以让你的程序在循环中响应其他事件
就算在循环当中StateChange事件也一样会被正确的引发

我winsock,inet都是这样用
如果你这样用不行我也就“回天乏术”了。
梦想成真2003 2003-08-27
  • 打赏
  • 举报
回复
Garfield(猫仔|别忘了结帖,同志) :
谢谢你,我已经按你说的试了,但是因为在
Do Until bDownloadFinished = true ' 检查flag
DoEvents
Loop
还没有运行StateChanged事件,所以是一个死循环
请问还有没有别的办法


Garfield 2003-08-26
  • 打赏
  • 举报
回复
每次做一个任务,当任务尚未完成时, inet.stillexecuting 为true
在你的下载任务内再做一个循环

do until 任务未完成
downloadfile

do until inet1.stillexecuting = false
doevents
loop

loop

这样就会确保完成一个下载后进行下一个下载。
Garfield 2003-08-26
  • 打赏
  • 举报
回复
使用inet的statechange事件

icResponseCompleted 12 该请求已经完成,并且所有数据均已接收到。


定义模块级变量 Dim bDownloadFinished as Boolean

Dim t As Integer: t = 0
Temparray为下载文件名数组
Do Until t > UBound(Temparray)
bDownloadFinished = false ' 重置下载是否完成的flag
If Len(Temparray(t)) Then
Inetftp.Execute , "GET " & "\b\" & Temparray(t) & " " & "E:\Download\mdb\" & Temparray(t)
t = t + 1
End If
Do Until bDownloadFinished = true ' 检查flag
DoEvents
Loop
Loop

在inet_stateChange事件里面设置flag

if state = 12 then bDownloadFinished = true

梦想成真2003 2003-08-26
  • 打赏
  • 举报
回复
有谁知道,轻快回复 ,必谢!!!!!!!!!!!!!!!!!!!!!!!!
梦想成真2003 2003-08-26
  • 打赏
  • 举报
回复
Dim t As Integer: t = 0
Temparray为下载文件名数组
Do Until t > UBound(Temparray)
If Len(Temparray(t)) Then
Inetftp.Execute , "GET " & "\b\" & Temparray(t) & " " & "E:\Download\mdb\" & Temparray(t)
t = t + 1
End If
Do Until Inetftp.StillExecuting = False
DoEvents
Loop
Loop
Garfield 2003-08-26
  • 打赏
  • 举报
回复
具体你是怎样下载的?inet下载方式不只一种
有OpenURL,有Execute,你用的是哪一种?
最好把下载那部分代码都帖出来看看
梦想成真2003 2003-08-26
  • 打赏
  • 举报
回复
Garfield(猫仔|别忘了结帖,同志):

我做了一个你说的程序,但是总是在
do until inet1.stillexecuting = false
doevents
loop
过不去,我也不知道为什么
希望你能解答 谢谢!!!!!!!

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧