Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕКСТЫ для лабработы 3 / вариант №32.rtf
Скачиваний:
21
Добавлен:
02.04.2015
Размер:
371.89 Кб
Скачать

InOutFunc : pointer;

FlushFunc : pointer;

CloseFunc : pointer;

UserData : array[1..16] of Byte;

Name : array[0..79] of Char;

Buffer : TTextBuf;

end;

В переменной Наndlе содержится номер описателя файла (когда

файл открыт). Это значение возвращается DOS.

Поле Моdе считается равным одному из следующих значений:

const

fmClosed = $D7B0;

fmInput = $D7B1;

fmOutput = $D7B2;

fmInOut = $D7B3;

B.Pascal 7 & Objects/LR - 386 -

Значение fmClosed показывает, что файл закрыт. Значения

fmInput и fmOutput показывают, что файл является текстовым файлом

и что для него была выполнена процедура Reset (fmInput) или

Rewrite (fmOutput). Значение fmOutput показывает, что переменная

файлового типа является типизированным или нетипизированным фай-

лом, для которого была выполнена процедура Reset или Rewrite. Лю-

бое другое значение говорит о том, что для файловой переменной

присваивание не было выполнено (и она, таким образом, не инициа-

лизирована).

Поле UserData в Borland Pascal недоступно, и пользователь-

ские программы могут сохранять в нем данные.

Поле Nаме содержит имя файла, которое представляет собой

последовательность символов, оканчивающуюся нулевым символом

(#0).

Для типизированных и нетипизированных полей RесSizе содержит

длину записи в байтах, а поле Рrivate зарезервировано, но являет-

ся свободным.

Для текстовых файлов BufPtr является указателем на буфер

размером BufSize, BufPоs представляет собой индекс следующего

символа в буфере, который должен быть записан или прочитан, а

BufEnd - счетчик допустимых символов в буфере. Указатели

OpenFunc, InOutFunc, FlushFunc и CloseFunc служат для ссылки на

программы ввода-вывода и используются для управления файлом. В

Главе 14 в разделе под заглавием "Драйверы устройств для тексто-

вых файлов" приводится дополнительная информация по этому вопро-

су.

B.Pascal 7 & Objects/LR - 387 -

Процедурные типы

─────────────────────────────────────────────────────────────────

Процедурные типы хранятся в виде двойного слова. При этом в

младшем слове содержится смещение процедуры, а в старшем - базо-

вый сегмент.

Прямой доступ к памяти

─────────────────────────────────────────────────────────────────

В Borland Pascal реализованы три предопределенных массива

Mem, MemW и MemL, которые используются для прямого доступа к па-

мяти. Каждый компонент массива Mem представляет собой байт, каж-

дый компонент массива MemW - слово, а каждый компонент MemL -

значение длинного целого типа (Longint).

Для индексирования массива Mem используется специальный син-

таксис. Два выражения целочисленного типа Word, разделенные запя-

тыми, используются для задания базового сегмента и смещения ячей-

ки памяти, к которой производится доступ. Например:

Mem[$0040:$0049] := 7;

Data := MemW[Seg(V):Ofs(V)];

MemLong := MemL[64:3*4];

Первый оператор записывает значение 7 в байт по адресу

$0040:$0049. Второй оператор помещает значение типа Word, запи-

санное в первые 2 байта переменной V, в переменную Data. Третий

оператор помещает значение типа Longint, записанное по адресу

$0040:$000C, в переменную MemLong.

Прямой доступ к портам

─────────────────────────────────────────────────────────────────

Для доступа к портам данных процессора 80х86 Borland Pascal

реализует два предопределенных массива - Port и PortW. Оба эти

массива являются одномерными массивами, где каждый элемент предс-

тавляет порт данных, адрес которого соответствует индексу. Индекс

имеет тип Word. Элементы массива Port имеют типа Byte, а элементы

массива PortW - Word.

Когда элементами массива Port или PortW присваивается значе-

ние, оно выводится в выбранный порт. Когда на элементы этих мас-

сивов имеются ссылки в выражениях, то значение вводится из задан-

ного порта.

Использование массивов Port и PortW ограничено только прис-

ваиванием и ссылками в выражениях, то есть элементы этих массивов

не могут использоваться в качестве параметров-переменных. Кроме

того, ссылки на весь массив Port или PortW (без индекса) не до-

пускаются.

B.Pascal 7 & Objects/LR - 388 -

───────────────────────────────────────────────────────────────────────

Соседние файлы в папке ТЕКСТЫ для лабработы 3