2013-07-23 431 views
0

LOF返回0长度的文件(LOF)返回0

这里是文件

enter image description here

下面是一个简单的功能

Public Function GetNumberOfLinesInFile(ByVal FileFullQualifiedName As String) As Double 
Dim f As Integer 
Dim FileBytes As Double 
Dim LineCount As Double 

f = FreeFile(0) 
Open FileFullQualifiedName For Binary Access Read As #f 
FileBytes = LOF(f) 
'//CODE MISSING 
Close #f 
GetNumberOfLinesInFile = LineCount 
End Function 

编辑 它看起来它不适用于Binary Access,如果文件打开如下,它工作正常

Open FileFullQualifiedName For Input Access Read As #f 

编辑2 在通过声明FileBytesLong,但它不工作处处工作上面的示例功能LOF。例如,在下面的行,既LOCLOF正在返回0

Do Until Loc(FF) >= LOF(FF) 

编辑3

不知何故,文件路径被改变,因此Open FileFullQualifiedName For Binary Access Read As #f是创造一个新的文件,并且显然,LOF是返回0这个空文件

+0

为什么FileBytes和LineCount被声明为双?他们需要长 – rags

+0

@rags它通过声明长期工作,这意味着这个功能不会工作,如果文件大小> 2GB – bjan

+0

@rags即使变量被宣布为长期它不是在所有的地方工作 – bjan

回答

0

我的错误

不知何故,文件路径被改变,因此Open FileFullQualifiedName For Binary Access Read As #f是创建一个新的文件,显然,LOF返航0这个空文件