- Флаги открытия файлов
- Свойства файлов
- Позиционирование внутри файла
- Использование кодовой страницы
- MessageBox
Флаги открытия файлов
Значения флагов, определяющих режим работы с файлом. Флаги определены следующим образом:
Идентификатор |
Значение |
Описание |
---|---|---|
FILE_READ |
1 |
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ |
FILE_WRITE |
2 |
Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ |
FILE_BIN |
4 |
Двоичный режим чтения-записи (без преобразования из строки и в строку). Флаг используется при открытии файлов (FileOpen()) |
FILE_CSV |
8 |
Файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем). Флаг используется при открытии файлов (FileOpen()) |
FILE_TXT |
16 |
Простой текстовый файл (тот же csv, однако разделитель не принимается во внимание). Флаг используется при открытии файлов (FileOpen()) |
FILE_ANSI |
32 |
Строки типа ANSI (однобайтовые символы). Флаг используется при открытии файлов (FileOpen()) |
FILE_UNICODE |
64 |
Строки типа UNICODE (двухбайтовые символы). Флаг используется при открытии файлов (FileOpen()) |
FILE_SHARE_READ |
128 |
Совместный доступ по чтению со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ |
FILE_SHARE_WRITE |
256 |
Совместный доступ по записи со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ |
FILE_REWRITE |
512 |
Возможность перезаписывания файла функциями FileCopy() и FileMove(). Файл должен существовать или открываться для записи. В противном случае файл открыт не будет |
FILE_COMMON |
4096 |
Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist()) |
При открытии файла можно указать один или более флагов, такое сочетание называется комбинацией флагов. Комбинация флагов записывается с помощью знака операции логического ИЛИ (|), который ставится между перечисляемыми флагами. Например, чтобы открыть файл в формате CSV одновременно на чтение и на запись, можно указать комбинацию FILE_READ|FILE_WRITE|FILE_CSV.
Пример:
int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV); |
Есть некоторые особенности работы при указании флагов чтения и записи:
- Если указан FILE_READ – делается попытка открытия уже существующего файла. Если файл не существует, то открыть файл не получится, новый файл не создается.
- Если FILE_READ|FILE_WRITE – создаётся новый файл если файл с таким именем отсутствует.
- Если FILE_WRITE – файл создается заново с нулевым размером.
При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ.
Флаги, определяющие тип чтения открытого файла, имеют приоритет. Самый старший флаг FILE_CSV, затем следует по старшинству флаг FILE_BIN, и наименьший приоритет имеет флаг FILE_TXT. Таким образом, если вдруг будут указаны сразу несколько флагов (FILE_TXT|FILE_CSV или FILE_TXT|FILE_BIN или FILE_BIN|FILE_CSV), то будет использован самый старший по приоритету флаг.
Флаги, определяющие тип кодировки, также имеют приоритет. Флаг FILE_UNICODE имеет более старший приоритет,чем флаг FILE_ANSI. Поэтому при указании комбинации FILE_UNICODE|FILE_ANSI будет использоваться флаг FILE_UNICODE.
Если не указано ни FILE_UNICODE, ни FILE_ANSI, то подразумевается FILE_UNICODE. Если не указано ни FILE_CSV, ни FILE_BIN, ни FILE_TXT, то подразумевается FILE_CSV.
Если файл открыт на чтение как текстовый (FILE_TXT или FILE_CSV), и при этом в начале файла будет обнаружен специальный двухбайтовый признак 0xff,0xfe, то флаг кодировки будет FILE_UNICODE, даже если указан флаг FILE_ANSI.
Смотри также