EOF
 
Проверяет, достигнут ли конец открытого файла

Синтаксис
Использование

result = EOF( filenum )

Параметры

filenum
Файловый номер типа Integer открытого файла.

Возвращаемое значение

Возвращает значение true (-1) если конец файла был достигнут, ноль (0) в противном случае.

Описание

При чтении из файлов, открытых для ввода данных Input (файловый режим), полезно знать, когда достигнут конец файла. Это позволяет избежать ошибок, вызванных во время чтения за пределами файлов. Используйте EOF для определения этого. EOF ожидает допустимый номер файла из уже открытого файла. Используйте FreeFile чтобы при открытии файла получить доступный (свободный) номер файла.

Для файловых номеров, привязанных к файлам, открытых для вывода данных Output, EOF всегда возвращает значение 0.

Пример

'' Этот код находит свободный файловый номер для использования и пытается открыть файл
'' "file.ext" , и если успешно, связывает наш файловый номер с открытым файлом.
'' Он читает файл построчно, с выводом его на экран. Цикл выполняется пока eof()
'' не вернет true. Цикл игнорируется, если файл пуст.

Dim As String file_name
Dim As Integer file_num

file_name = "file.ext"
file_num = FreeFile( )                 '' получить доступный файловый номер

'' открыть наш файл и связать его с нашим файловым номером, при ошибке выход
If( Open( file_name For Input As #file_num ) ) Then
   Print "ERROR: opening file " ; file_name
   End -1
End If

Do Until EOF( file_num )               '' цикл выполняется до тех пор, пока мы достигли конца файла
   Dim As String text
   Line Input #file_num, text               '' прочитать строку текста ...
   Print text                             '' ... и вывести ее на экран
Loop

Close #file_num                        '' Закроем файл через наш файловый номер

End 0


Из-за основных различий в библиотеках, используемых компилятором на различных платформах, функция EOF может быть недостоверной, при чтении текстовых файлов Linux (с концами строк LF) в Windows версии компилятора. Компиляторы DOS и Linux не имеют этой проблемы. Одно из решений заключается в том, чтобы открыть файл для binary вместо input. Line Input# и EOF по-прежнему могут быть использованы как в приведенном выше примере, а функция EOF будет работать надежно. Это решение не обнаружит символ конца файла, но это используется, чтобы отметить конец текстовых потоков, которые не являются дисковыми файлами.

Отличия от QB

  • В QB COM-port сигнализирует EOF когда нет больше никаких знаков, ожидающих чтения.
  • В QB, для файлов, открытых в режиме RANDOM или BINARY, EOF возвращает значение, отличное от нуля,  только после того, как была предпринята попытка чтения после конца файла. В FreeBASIC, EOF возвращает true после последнего прочитанного пункта.

См. также