代码实现功能:
从"ftp://gsonline.xicp.net"下载"!SysPatch.log",然后根据其中的内容来确认需要下载的文件列表:
!SysPatch.log文件内容:
[patch]
var=版本号
no=2
soft1.exe
soft2.exe程序:
Private Sub Form_Load()
    Dim src As String
    Inet1.URL = "ftp://gsonline.xicp.net"
    Inet1.Protocol = icFTP
    Inet1.UserName = ""
    Inet1.Password = ""
    FileName$ = App.Path & "\"
********************下载!SysPatch.log,注意,第一个!SysPatch.log它后面有个空格*************
    Inet1.Execute , "GET !SysPatch.log " & FileName$ & "!SysPatch.log"
    Do While Inet1.StillExecuting
        DoEvents
    Loop
**************以只读的方式打开!SysPatch.log*************************************    
    Open App.Path & "!SysPatch.log" For Input Access Read As #1
    Line Input #1, src
**************如果文件中第一行不是[patch],则说明文件已经损害********************
    If src = "[patch]" Then                   
       Line Input #1, src
**************文件的第二行是一个判断标志,和label4.caption相比来确认是否是最新的版本,如果是则关闭并删除文件,载入主窗体main,至此升级完毕*****************
        If Label4.Caption = Mid(src, 5) Then  
           Close #1                           
           Kill "!SysPatch.log"
            Unload logo
            Load main
           main.Show
        End If
**************文件的第三行是需要下载的文件的列表**********************        
        Line Input #1, src                   
       src = Mid(src, 4)  
        For i = 1 To Val(src) Step 1
          Line Input #1, src
          Inet1.Execute , "GET" & src & FileName$ & src
        Next i
        MsgBox "好了,文件列表我下载完毕", 16, "拿分来"
    Else
        MsgBox "兄弟,我找不到!SysPatch.log文件啊", 64, "你娃耍我?"
        Unload logo
    End If

解决方案 »

  1.   

    我估计问题出在:
           For i = 1 To Val(src) Step 1
              Line Input #1, src
              Inet1.Execute , "GET" & src & FileName$ & src
           Next i
        大家怎么看?
      

  2.   

    调试的时候,说“文件未找到”,然后就停留在这一句:
    Open App.Path & "!SysPatch.log" For Input Access Read As #1
      

  3.   


    For i = 1 To Val(src) Step 1
              Line Input #1, src
              Inet1.Execute , "GET" & src & FileName$ & src
              Do While Inet1.StillExecuting'加上这个来判断是否下载完成
                  DoEvents
              Loop
     Next i
      

  4.   

    Private Sub Form_Load()
        Dim src As String
        Inet1.URL = "ftp://gsonline.xicp.net"
        Inet1.Protocol = icFTP
        Inet1.UserName = ""
        Inet1.Password = ""
        FileName$ = App.Path & "\"
    ********************下载!SysPatch.log,注意,第一个!SysPatch.log它后面有个空格*************
        Inet1.Execute , "GET !SysPatch.log " & FileName$ & "!SysPatch.log"
        Do While Inet1.StillExecuting
            DoEvents
        Loop
    **************以只读的方式打开!SysPatch.log*************************************    
        Open App.Path & "\!SysPatch.log" For Input Access Read As #1
        Line Input #1, src
    **************如果文件中第一行不是[patch],则说明文件已经损害********************
        If src = "[patch]" Then                   
           Line Input #1, src
    **************文件的第二行是一个判断标志,和label4.caption相比来确认是否是最新的版本,如果是则关闭并删除文件,载入主窗体main,至此升级完毕*****************
            If Label4.Caption = Mid(src, 5) Then  
               Close #1                           
               Kill "!SysPatch.log"
                Unload logo
                Load main
               main.Show
            End If
    **************文件的第三行是需要下载的文件的列表**********************        
            Line Input #1, src                   
           src = Mid(src, 4)  
            For i = 1 To Val(src) Step 1
              Line Input #1, src
              Inet1.Execute , "GET " & src & FileName$ & src
            Next i
            MsgBox "好了,文件列表我下载完毕", 16, "拿分来"
        Else
            MsgBox "兄弟,我找不到!SysPatch.log文件啊", 64, "你娃耍我?"
            Unload logo
        End If--------------------------------------以上测试通过
      

  5.   

    加上:
    Do While Inet1.StillExecuting'加上这个来判断是否下载完成
                  DoEvents
    Loop依然提示:文件未找到(调试的时候),然后下面这句变为黄色
    Open App.Path & "!SysPatch.log" For Input Access Read As #1我将它生成EXE后,运行提示文件未找到----敬请注意,没有提示什么“仍在执行上一操作”
      

  6.   

    你单步调试下
    运行完
    Inet1.Execute , "GET !SysPatch.log " & FileName$ & "!SysPatch.log"
        Do While Inet1.StillExecuting
            DoEvents
        Loop
    这一段,看下对应路径下是否有"!SysPatch.log文件
    不过看你的代码也应该没有问题才对...
      

  7.   

    你再延迟一下吧.Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)'定义API
    Sleep 1000'延迟
    Open App.Path & "\!SysPatch.log" For Input Access Read As #1
      

  8.   

    yangao(QQ宝典阁下:
        我调试时,提示找不到文件,你的怎么能运行?
      

  9.   

    sorry
    上面忘了下载了,改成这个Private Sub Form_Load()
        Dim src As String
        Inet1.URL = "ftp://gsonline.xicp.net"
        Inet1.Protocol = icFTP
        Inet1.UserName = ""
        Inet1.Password = ""
        FileName$ = App.Path & "\"
    ********************下载!SysPatch.log,注意,第一个!SysPatch.log它后面有个空格*************
        Inet1.Execute , "GET !SysPatch.log " & FileName$ & "!SysPatch.log"
        Do While Inet1.StillExecuting
            DoEvents
        Loop
    **************以只读的方式打开!SysPatch.log*************************************    
        Open App.Path & "\!SysPatch.log" For Input Access Read As #1
        Line Input #1, src
    **************如果文件中第一行不是[patch],则说明文件已经损害********************
        If src = "[patch]" Then                   
           Line Input #1, src
    **************文件的第二行是一个判断标志,和label4.caption相比来确认是否是最新的版本,如果是则关闭并删除文件,载入主窗体main,至此升级完毕*****************
            If Label4.Caption = Mid(src, 5) Then  
               Close #1                           
               Kill "!SysPatch.log"
                Unload logo
                Load main
               main.Show
            End If
    **************文件的第三行是需要下载的文件的列表**********************        
            Line Input #1, src                   
           src = Mid(src, 4)  
            For i = 1 To Val(src) Step 1
              Line Input #1, src
              Inet1.Execute , "GET " & src & " " & FileName$ & src
              Do While Inet1.StillExecuting
                    DoEvents
              Loop
            Next i
            MsgBox "好了,文件列表我下载完毕", 16, "拿分来"
        Else
            MsgBox "兄弟,我找不到!SysPatch.log文件啊", 64, "你娃耍我?"
            Unload logo
        End If
      

  10.   

    3个文件我都下载了呀
    !SysPatch.log
    mir.dat
    mirserver.rar
    没病毒吧?!
    ^_^
      

  11.   

    tztz520(午夜逛街) 阁下:
        非常感谢你的API函数,不过问题依然不能解决,还是那个问题----找不到文件,我甚至也在
        Inet1.Execute , "GET !SysPatch.log " & FileName$ & "!SysPatch.log"
        Do While Inet1.StillExecuting
            DoEvents
        Loop
        前面加了句Sleep 1000。
      

  12.   

    大妈好像没什麽问题,除了 tztz520(午夜逛街) 说的,还有
    Open App.Path & "!SysPatch.log" For Input Access Read As #1
    这里用Open FileName$ & "!SysPatch.log" For Input Access Read As #1
    不过ftp服务器好像连不上。
      

  13.   

    非常惊讶地对yangao(QQ宝典):
        同上,我非常惊讶----您的的确确是将文件下载下来了
        可是我怎么不行???
        !SysPatch.log可以下载下来
        其他2个文件就不得而知----文件未找到,我怎么都想不通的是,竟然还将错误停留在:
        Open App.Path & "!SysPatch.log" For Input Access Read As #1
      

  14.   

    Open App.Path & "\!SysPatch.log" For Input Access Read As #1
    你没仔细看啊
    你那句我已经给你改了
      

  15.   

    To All:
        蒙诸位垂青!
        问题已经解决,下面是经诸位改正后的可以准确运行的代码:
    Private Sub Form_Load()
        Dim src As String
        'Dim intofmy As Integer
        Inet1.URL = "ftp://gsonline.xicp.net"
        Inet1.Protocol = icFTP
        Inet1.UserName = ""
        Inet1.Password = ""
        FileName$ = App.Path & "\"
        Inet1.Execute , "GET !SysPatch.log " & FileName$ & "!SysPatch.log"
        Do While Inet1.StillExecuting
            DoEvents
        Loop    Open FileName$ & "!SysPatch.log" For Input Access Read As #1
        Line Input #1, src
        If src = "[patch]" Then                   
            Line Input #1, src
            If Label4.Caption = Mid(src, 5) Then  
               Close #1                           
               Kill "!SysPatch.log"
               Unload logo
               Load main
               main.Show
            End If
            
            Line Input #1, src                   
            src = Mid(src, 4)                    
            
            For i = 1 To Val(src) Step 1
              Line Input #1, src
              Inet1.Execute , "GET" & src & FileName$ & src
              Do While Inet1.StillExecuting
                   DoEvents
              Loop
            Next i
            MsgBox "文件下载完毕", 16, "谢谢诸位"
        Else
            MsgBox "找不到要下载的文件", 64, "你小子出错了"
            Unload logo
        End If
    End Sub    散分
      

  16.   

    下载完成之后,你用msgbox dir(FileName$ & "!SysPatch.log")看一下这个文件是否存在吧