842_____________________________________________Глава 14

Файлы могут иметь следующие флаги совместного доступа нескольких прило-
жений (файл share.h):

SH_COMPAT

SH_DENYRW

SHJDENWR

SH_DENYRD

SH_DENYNO,
SH DENYNONE

Установка режима совместного доступа. Объединяется с дру-
гими флагами (например, SH_COMPAT | SH_DENWR)

Доступ к файлу обеспечивает только текущий дескриптор
Разрешает повторное открытие файла только для чтения
Разрешает повторное открытие файла только для записи

Разрешает повторное открытие файла, для чтения и записи
но только с тем же SH COMPAT

Флаги могут соединяться в одно слово операцией ИЛИ (|). Из флагов
SH_DENYRD, SH_DENYNO может быть задан только 1.

Имеется и другой набор констант режимов, в которых могут быть открыты
файлы и которые определяют доступ к файлам других приложений (файл SysU-
tils.hpp):

Имя константы	Значение	Режим
fmOpenRead	$0000	открыть только для чтения
fmOpen Write	$0001	открыть только для записи
fmOpenReadWrite	$0002	открыть для чтения и записи
fmShareCompat	$0000	открыть совместимым с FCB
fmS hareExclusive	$0010	запрет другим приложениям читать и записывать в файл
fmShareDenyWrite	$0020	запрет другим приложениям записывать в файл
fmShareDenyRead	$0030	запрет другим приложениям читать из файла
fmShareDenyNone	$0040	полный доступ к файлу других приложений

В языках С и C++ файл рассматривается как поток (stream), представляющий
собой последовательность считываемых или записываемых байтов.

В C++Builder могут использоваться два подхода к работе с файлами. Первый
заключается в том, что информация о потоке (файле) заносится в структуру типа
FILE, определенную в файле stdio.h, и файл оказывается связанным с этой струк-
турой. Второй подход связывает файл с дескриптором (handle) — целым значени-
ем, характеризующим размещение информации о файле во внутренних таблицах
системы.

В начале работы любой программы автоматически открывается три потока со
своими дескрипторами:

поток	дескриптор	
stdin	0	стандартный входной поток — обычно клавиатура
stdout	1	стандартный выходной поток — обычно экран
stderr	————————— 2	стандартный поток сообщений об ошибках