我想做一个从ftp下载文件的程序,用inet控件,问题是因为需要下载的文件多,需要做循环,但是我不清楚如何判断当前文件下载完毕,可以进行下一文件的下载,
请高手指明,谢谢

解决方案 »

  1.   

    每次做一个任务,当任务尚未完成时, inet.stillexecuting 为true
    在你的下载任务内再做一个循环do until 任务未完成
        downloadfile    do until inet1.stillexecuting = false
          doevents
        looploop这样就会确保完成一个下载后进行下一个下载。
      

  2.   

    Garfield(猫仔|别忘了结帖,同志):我做了一个你说的程序,但是总是在
    do until inet1.stillexecuting = false
       doevents
    loop
    过不去,我也不知道为什么
    希望你能解答   谢谢!!!!!!!
      

  3.   

    具体你是怎样下载的?inet下载方式不只一种
    有OpenURL,有Execute,你用的是哪一种?
    最好把下载那部分代码都帖出来看看
      

  4.   

    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
      

  5.   

    使用inet的statechange事件icResponseCompleted 12 该请求已经完成,并且所有数据均已接收到。 
    定义模块级变量 Dim bDownloadFinished as BooleanDim 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事件里面设置flagif state = 12 then bDownloadFinished = true
      

  6.   

    Garfield(猫仔|别忘了结帖,同志) :
    谢谢你,我已经按你说的试了,但是因为在 
    Do Until bDownloadFinished = true ' 检查flag
        DoEvents
    Loop
    还没有运行StateChanged事件,所以是一个死循环
    请问还有没有别的办法
      

  7.   

    死循环!?DoEvents 可以让你的程序在循环中响应其他事件
    就算在循环当中StateChange事件也一样会被正确的引发我winsock,inet都是这样用
    如果你这样用不行我也就“回天乏术”了。