Процедуры и функции модуля WinPrn перечислены в следующей
таблице:
┌──────────────────────────┬────────────────────────────────────┐
│ Процедура/функция │ Описание │
├──────────────────────────┼────────────────────────────────────┤
│ AbortPrn │ Прекращает печать задания, отбрасы-│
│ │ вая все нераспечатанные данные. │
├──────────────────────────┼────────────────────────────────────┤
│ AssignPrn │ Присваивает принтеру файл. │
├──────────────────────────┼────────────────────────────────────┤
│ AssingDefPrn │ Присваивает файл используемому по│
│ │ умолчанию принтеру. │
├──────────────────────────┼────────────────────────────────────┤
│ SetPrnFont │ Начинает печать файла с выбранным│
│ │ шрифтом. │
├──────────────────────────┼────────────────────────────────────┤
│ TitlePrn │ Выводит заголовок печатаемого фай-│
│ │ ла. │
└──────────────────────────┴────────────────────────────────────┘
Драйверы устройств для текстовых файлов
Borland Pascal позволяет вам определить ваши собственные
драйверы устройств для текстовых файлов. Драйвер устройства для
текстовых файлов представляет собой набор из четырех функций, ре-
ализующих полный интерфейс между файловой системой Borland Pascal
и каким-либо устройством.
Этими четырьмя функциями, с помощью которых определяется лю-
бой драйвер устройства, являются функции Open, InOut, Flush и
Close. Заголовок каждой функции имеет следующий вид:
function DeviceFunc(var F: TextRec) integer
где TехtRес (или TTextRec для Windows) - тип записи текстового
файла, который определяется в Главе 21. Чтобы в функции использо-
вался дальний тип вызова, каждая из них должна компилироваться с
директивой {$F+}. Значение, возвращаемое каждой функцией, предс-
тавляющей собой интерфейс с устройством, становится значением,
возвращаемым функцией IOResult. Возвращаемое значение 0 свиде-
тельствует об успешном завершении операции.
Для того, чтобы связать функцию, осуществляющую интерфейс с
устройством, с конкретным файлом, нужно написать специальную про-
цедуру Assign (аналогичную процедуре AssignCrt в модуле Crt или
WinCrt). Эта процедура должна присваивать адреса четырех функций,
осуществляющих интерфейс с устройствами, четырем указателям на
функции в переменной текстового файла. В придачу к этому вы долж-
ны сохранить системную константу fmClosed в поле Моdе, записать
размер буфера текстового файла в переменную BufSize, сохранить
указатель буфера текстового файла в переменной BufPtr и очистить
строку Nаме.
Предположим, например, что именами четырех функций, реализу-
ющих интерфейс с устройством, являются функции DevOpen, DevInOut,
DevFlush, DevClose и Assign.
Тогда процедура Assing может выглядеть следующим образом:
procedure AssignDev(var F: Text);
begin
with TextRec(F) do
begin
mode := fmClosed;
BufSize := SizeOf(Buffer);
BufPtr := @Buffer;
OpenFunc := @DevOpen;
InOutFunc := @DevInOut;
FlushFunc := @DevFlush;
CloseFunc := @DevClose;
Name[0] := #0;
end;
end;
Для хранения пользовательской информации в функции, реализу-
ющей интерфейс с устройством, может использоваться поле записи
UserData. Это поле не изменяется файловой системой Borland
Pascal.