FileAttr
 
Возвращает информацию об открытом номере файла

Синтаксис

Declare Function FileAttr ( ByVal filenum As Integer, ByVal returntype As Integer = 1 ) As Integer

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

#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) возвращаемое значение является суммой одного или нескольких из следующих значений:
ValueFile ModeConstant
1InputfbFileModeInput
2OutputfbFileModeOutput
4RandomfbFileModeRandom
8AppendfbFileModeAppend
32BinaryfbFileModeBinary


Для хендла файла, returntype = 2 (fbFileAttrHandle), возвращаемое значение является дескриптором файла, поставляемого средой выполнения C для типовых устройств файла.

Только на Windows: Для хендла файла, returntype = 2 (fbFileAttrHandle), значение, возвращаемое для COM устройств является дескриптором, возвращенным CreateFile() когда устройство было впервые открыто. Значение, возвращаемое для LPT устройств является дескриптором, возвращенным OpenPrinter() когда устройство было впервые открыто. Это значение дескриптора может передаваться другим функциям Windows API.

Только на Linux: Для хендла файла, returntype = 2 (fbFileAttrHandle), значение, возвращаемое для COM устройств является файловым дескриптором, возвращенным open() когда устройство было впервые открыто.

Для кодировки, returntype = 3 (fbFileAttrEncoding), возвращаемое значение является одним из следующих значений:
Значение КодировкаКонстанта
0AsciifbFileEncodASCII
1UTF-8fbFileEncodUTF8
2UTF-16fbFileEncodUTF16
3UTF-32fbFileEncodUTF32


Пример

#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

См. также