vb space问题
PrivateSubCommand1_Click()DimfileNumAsIntegerDimfileContentAsStringDimfileInfo()AsStr...
Private Sub Command1_Click()
Dim fileNum As Integer
Dim fileContent As String
Dim fileInfo() As String
Dim tempData As String
fileNum = FreeFile
Open "C:\form.txt" For Binary As #fileNum
fileContent = Space(LOF(fileNum)) '
Get #fileNum, , fileContent
Close fileNum
fileInfo = Split(fileContent, vbCrLf) 'split函数根据vbCrLf(回车换行)来将fileContent分隔成数组
Text1.Text = fileInfo(0)
End Sub
想问一下高手,因为觉得这句话的Space只是返回空格的长度,为什么上面的程序一定要“fileContent = Space(LOF(fileNum)) ”这句话才能不报错运行?
而下面的fileInfo = Split(fileContent, vbCrLf)这句程序,是将fileContent的内容分隔成数组,与上面fileContent = Space(LOF(fileNum)) 这句程序有必然的关系吗? 展开
Dim fileNum As Integer
Dim fileContent As String
Dim fileInfo() As String
Dim tempData As String
fileNum = FreeFile
Open "C:\form.txt" For Binary As #fileNum
fileContent = Space(LOF(fileNum)) '
Get #fileNum, , fileContent
Close fileNum
fileInfo = Split(fileContent, vbCrLf) 'split函数根据vbCrLf(回车换行)来将fileContent分隔成数组
Text1.Text = fileInfo(0)
End Sub
想问一下高手,因为觉得这句话的Space只是返回空格的长度,为什么上面的程序一定要“fileContent = Space(LOF(fileNum)) ”这句话才能不报错运行?
而下面的fileInfo = Split(fileContent, vbCrLf)这句程序,是将fileContent的内容分隔成数组,与上面fileContent = Space(LOF(fileNum)) 这句程序有必然的关系吗? 展开
展开全部
首先纠正一皮宽下,Space不是返回空格的长度,而是生成一个指定长度的由空格组成的字符串!
fileContent = Space(LOF(fileNum))这个其实是在内存中生成一个与文件长度一样的缓冲区,然后下面的Get #fileNum, , fileContent就把整个文件内容读到这个缓冲区肆郑中,也就是说最终读取文件的多少是由fileContent这个变量的实际长度决定的!所以fileContent = Space(LOF(fileNum))这个是非常必要的,不是可燃雹亮有可无的!!!
其实换个思路程序可以大大简化:
Private Sub Command1_Click()
Dim fileNum As Integer
Dim fileInfo() As String
fileNum = FreeFile
Open "C:\form.txt" For Binary As #fileNum
fileInfo = Split(Input(LOF(fileNum), #fileNum), vbCrLf)
Close fileNum
Text1.Text = fileInfo(0)
End Sub
展开全部
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)这个循环中
只是为了枣野给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)这个循环中
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Space 函数是返回指定个数的空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为打开文件的模式是 Binary ,在 Get #fileNum, , fileContent 那儿,
是按“输入变量的值”占用的空间来决定读取多少内容。
fileContent 是变长字符串,它的初始长度是0,也就是一个空串。
如果不对fileContent进行一个“初始化”的操作,那么它在Get语句中,只“读取”返纳0字节内容。
简单地说,就是什么东西都不会读取。
因此,先让fileContent的“长度”为文件的字节数,
在Get语句那儿,就会把整个文件内容读入fileContent中。
这个是按“字符个数”来读取的,最少会读取 len(fileContent)字节。
如果内容全是西文的,字节数跟字符数是相同的。
但是,如果文件内容中有“中文字符”,那么读取的字节数就会增加(当然最多是文件长度)。
你这段代码的作用,是把整个文件读取到内存(在fileContent的值中),
然后,按“每一行”进行一次拆分,形成一个数组。
最后,这个数组的每一个元素,就兄弊是文件中的每一行的内容。
只是这个方法有一点小BUG:
如果文件内容中羡世族有中文、并且以vbCrLf结束,最后一个元素会是一串空格。
如果文件内容中有中文但结束处不带vbCrLf,则“最后一行”就会多出一些空格来。
是按“输入变量的值”占用的空间来决定读取多少内容。
fileContent 是变长字符串,它的初始长度是0,也就是一个空串。
如果不对fileContent进行一个“初始化”的操作,那么它在Get语句中,只“读取”返纳0字节内容。
简单地说,就是什么东西都不会读取。
因此,先让fileContent的“长度”为文件的字节数,
在Get语句那儿,就会把整个文件内容读入fileContent中。
这个是按“字符个数”来读取的,最少会读取 len(fileContent)字节。
如果内容全是西文的,字节数跟字符数是相同的。
但是,如果文件内容中有“中文字符”,那么读取的字节数就会增加(当然最多是文件长度)。
你这段代码的作用,是把整个文件读取到内存(在fileContent的值中),
然后,按“每一行”进行一次拆分,形成一个数组。
最后,这个数组的每一个元素,就兄弊是文件中的每一行的内容。
只是这个方法有一点小BUG:
如果文件内容中羡世族有中文、并且以vbCrLf结束,最后一个元素会是一串空格。
如果文件内容中有中文但结束处不带vbCrLf,则“最后一行”就会多出一些空格来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询