2 回答
TA贡献1817条经验 获得超6个赞
fileContent = Space(LOF(fileNum))
只是为了给fileContent这个字符串申请存放"C:\form.txt"这个文件内容的空间,
如果不加这句,你的字符串变量fileContent就会因为没地方放文件内容而报错
你如果只是想显示文件的一行的话,可以像下面这样
Private Sub Command1_Click()
Dim fileNum As Integer
Dim fileContent As String
fileNum = FreeFile
Open "C:\form.txt" For Binary As #fileNum
Line Input #fileNum, fileContent
Close fileNum
Text1.Text = fileContent
End Sub
如果想对文件的每行进行单独处理的话就只需将line input这句放在do..loop until eof(filenum)这个循环中
TA贡献1802条经验 获得超6个赞
因为打开文件的模式是 Binary ,在 Get #fileNum, , fileContent 那儿,
是按“输入变量的值”占用的空间来决定读取多少内容。
fileContent 是变长字符串,它的初始长度是0,也就是一个空串。
如果不对fileContent进行一个“初始化”的操作,那么它在Get语句中,只“读取”0字节内容。
简单地说,就是什么东西都不会读取。
因此,先让fileContent的“长度”为文件的字节数,
在Get语句那儿,就会把整个文件内容读入fileContent中。
这个是按“字符个数”来读取的,最少会读取 len(fileContent)字节。
如果内容全是西文的,字节数跟字符数是相同的。
但是,如果文件内容中有“中文字符”,那么读取的字节数就会增加(当然最多是文件长度)。
你这段代码的作用,是把整个文件读取到内存(在fileContent的值中),
然后,按“每一行”进行一次拆分,形成一个数组。
最后,这个数组的每一个元素,就是文件中的每一行的内容。
只是这个方法有一点小BUG:
如果文件内容中有中文、并且以vbCrLf结束,最后一个元素会是一串空格。
如果文件内容中有中文但结束处不带vbCrLf,则“最后一行”就会多出一些空格来。
添加回答
举报