建一个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)那一行出错。
请教!
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)那一行出错。
请教!
因为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函数相当,而没有前述的问题。
我修改了代码如下还是不通:
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则报“文件已经打开”的错误。继续请教!
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