建一个Active文档工程,上面一个command1,一个text1,一个text2
option explicit
private sub command1_click()dim strPath as string
strPath="C:\test1.txt"
userDocument.AsyncRead strPath,vbAsyncTypeFile,"test1"
end subprivate sub UserDocument_AsyncReadComplete(AsyncProp as AsyncProperty)
dim FileNum as Long
text2.text="test1.txt文件下载完成"
FileNum=FileFree
open AsyncProp.value for input as FileNum
text1.text=input(lof(FileNum),FileNum)
close FileNumend sub上述代码老是在text1.text=input(lof(FileNum),FileNum)那一行出错。
请教!

解决方案 »

  1.   

    不知道提示错误是否是"输出超出文件尾"?
    因为VB的LOF函数和FileLen函数都返回的是字节数,
    这可能是大家常提起的“字符”的问题引起的。
    因为vb内部使用Unicode
    偶在别处看见过类似的问题,那里是这样解决的:把Open打开文件的方式由Input改为Binary方式,即 
         Open "d:\test1.txt" For Binary As filenum1 
        然后,使用Get语句代替Input语句: 
         TextLine = Space(LOF(filenum1)) 
         Get filenum1, , TextLine 
        这个语句速度同Input函数相当,而没有前述的问题。 
      

  2.   

    FileNum=FileFree是freefile不是filefree
      

  3.   

    谢谢两位大侠!
    我修改了代码如下还是不通:
    Option Explicit
    Dim TextLine As StringPrivate Sub command1_click()
    Dim strPath As String
    strPath = "c:\test1.txt"
    UserDocument.AsyncRead strPath, vbAsyncTypeFile, "test1"
    End SubPrivate Sub UserDocument_AsyncReadComplete(AsyncProp As AsyncProperty)
    Dim FileNum As Long
    FileNum = FreeFileOpen AsyncProp.Value For Binary As FileNum
    'Open "c:\test1.txt" For Binary As FileNum
    TextLine = Space(LOF(FileNum))
    Get FileNum, , TextLineClose FileNum
    End Sub上面代码在点击command1按钮后什么反映都没有。
    如果上面代码用Open "c:\test1.txt" For Binary As FileNum而不用Open AsyncProp.Value For Binary As FileNum则报“文件已经打开”的错误。继续请教!
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
      Dim strPath As String
      strPath = "i:\test.txt"
      UserDocument.AsyncRead strPath, vbAsyncTypeFile, "test"
    End SubPrivate Sub UserDocument_AsyncReadComplete(AsyncProp As AsyncProperty)
      Dim filenum As Long
      filenum = FreeFile
      Open AsyncProp.Value For Input As filenum
      Text1.Text = StrConv(InputB(LOF(filenum), filenum), vbUnicode)
      Close filenumEnd Sub