关于lof函数和input函数的问题,请高人指点下:

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:32:27
Private Type record
id As Integer
name As String
End Type

Private Sub Command1_Click()
Dim maxsize, nexchar, mychar
Open "d:/notebook.txt" For Input As #2
maxsize = LOF(2)
For nextchar = maxsize To 1 Step -1
Seek #2, nextchar
mychar = Input(1, #2)
Next nextchar
Print EOF(2)
Close #2
End Sub
我想请教的是lof(2)的值怎么计算的,是不是不同类型的文件它的值都不一样呢?
input(1,#2)函数的值又是多少?

lof(2),返回#2 文件的长度,单位是字节 ,和filelen()函数返回结果一样,只是,lof用在已经打开的文件

input(1,#2) ,这句的意思是,返回 #2 号文件的一个字符,就是一个一个的读取字符的意思!!

lof 返回文件字节数,而input一次读取一个字符。对于中文来说,一个字根据编码不同可以是2字节或是3字节或是4字节。如果用lof作为计数条件用input来读含有中文或是编码非ANSI的文本文件,最后必然是报超出文件尾错误。可以用inputb来读取,这个是每次读取一个字节,但结果要转换成字符就比较麻烦。对于文本文件,如果不需要定位的话用do while not eof()来一直读到文件结束,而不要用lof或filelen。即使需要定位也可以用自己计数的方式解决