Проверяет, достигнут ли конец открытого файла
Синтаксис
Использование
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 после последнего прочитанного пункта.
См. также