Возвращает информацию об открытом номере файла
Синтаксис
Использование
#include "file.bi"
result = FileAttr( filenum, [ returntype ] )
или
#include "vbcompat.bi"
result = FileAttr( filenum, [ returntype ] )
Параметры
filenum
Номер файла или устройства открытого с помощью
Open
returntype
Значение
Integer
, указывающее тип информации для возврата.
Возвращаемое значение
Значение, связанное с типом возвращаемого значения, в противном случае 0 в
случае ошибки.
Описание
Возвращается информация о номере файла на основании предоставленного
returntype
Значение |
Описание | Константа |
1 | Режим файла | fbFileAttrMode |
2 |
Хендл файла | fbFileAttrHandle |
3 |
Кодировка | fbFileAttrEncoding |
Для файлового режима,
returntype = 1 (
fbFileAttrMode)
возвращаемое значение является суммой одного или нескольких из следующих
значений:
Value | File Mode | Constant |
1 | Input | fbFileModeInput |
2 | Output | fbFileModeOutput |
4 | Random | fbFileModeRandom |
8 | Append | fbFileModeAppend |
32 | Binary | fbFileModeBinary |
Для хендла файла,
returntype = 2 (
fbFileAttrHandle),
возвращаемое значение является дескриптором файла, поставляемого средой
выполнения C для типовых устройств файла.
Только на
Windows: Для хендла файла,
returntype = 2 (
fbFileAttrHandle),
значение, возвращаемое для COM устройств является дескриптором, возвращенным
CreateFile()
когда устройство было впервые открыто. Значение, возвращаемое для LPT
устройств является дескриптором, возвращенным
OpenPrinter() когда устройство было впервые открыто.
Это значение дескриптора может передаваться другим функциям Windows API.
Только на
Linux: Для хендла файла,
returntype = 2 (
fbFileAttrHandle),
значение, возвращаемое для COM устройств является файловым дескриптором,
возвращенным open() когда устройство было впервые открыто.
Для кодировки,
returntype = 3 (
fbFileAttrEncoding),
возвращаемое значение является одним из следующих значений:
Значение |
Кодировка | Константа |
0 | Ascii | fbFileEncodASCII |
1 | UTF-8 | fbFileEncodUTF8 |
2 | UTF-16 | fbFileEncodUTF16 |
3 | UTF-32 | fbFileEncodUTF32 |
Пример
#include "vbcompat.bi"
#include "crt.bi"
Dim f As FILE Ptr, i As Integer
'' Откроем файл и напишем в него текст
Open "test.txt" For Output As #1
f = Cast( FILE Ptr, FileAttr( 1, fbFileAttrHandle ))
For i = 1 To 10
fprintf( f, !"Line %i\n", i )
Next i
Close #1
'' повторно откроем файл и прочтем текст
Open "test.txt" For Input As #1
f = Cast( FILE Ptr, FileAttr( 1, fbFileAttrHandle ))
While feof(f) = 0
i = fgetc(f)
Print Chr(i);
Wend
Close #1
Отличия от QB
- Нет для returntype = 1
- QBasic и 16-разрядный Visual Basic возвращает дескриптор файла DOS для returntype = 2
- returntype = 3 является новым в FreeBASIC
См. также