2013-07-23 3 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 

Edit 2 В приведенной выше функции LOF образца работал объявляя FileBytes как Long, но он не работает везде. Например, в следующей строке, как LOC и LOF возвращаются 0

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

Редактировать 3

Каким-то образом, путь к файлу был изменен, и, следовательно, Open FileFullQualifiedName For Binary Access Read As #f создавал новый файл, и, очевидно, LOF был возвращение 0 для этого пустого файла

+0

Почему FileBytes и LineCount объявлены как Double ?? Они должны быть длинными – rags

+0

@rags Это действительно работало, объявив как долго, это означает, что эта функция не работает, если размер файла> 2GB – bjan

+0

@rags. Он не работает во всех местах, хотя переменная объявлена ​​как Long – bjan

ответ

0

Моя ошибка

Каким-то образом, путь к файлу был изменен, и, следовательно, Open FileFullQualifiedName For Binary Access Read As #f создавал новый файл, и, очевидно, LOF возвращался 0 для этого пустого файла

Смежные вопросы