ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 5


Функция Ord                                         модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает порядковый номер для  значения  пере-
числимого типа.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Ord(x): Longint;

     Примечания: Параметр x представляет собой выражение перечис-
лимого типа. Результат имеет длинный целый тип и его значение яв-
ляется порядковым значением для x.

      См. также: Chr.

Процедура OutText                                    модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Пересылает строку на устройство  вывода  в  то
место, в котором находится текущий указатель.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure ОutTехt(TextString: String);

     Примечания: Параметр TextString выводится в месте расположе-
ния текущего указателя.  При этом используются текущие  параметры
выравнивания. Если строка слишком длинная и не умещается на экра-
не или в текущей области просмотра,  то она усекается. Если акти-
вен шрифт, используемый по умолчанию (шрифт с побитовым отображе-
нием),  а строка слишком велика и не умещается на экране,  то она
не выводится.

     В данной процедуре используется шрифт,  установленный проце-
дурой SetTextStyle.  Чтобы обеспечить  совместимость выполняемого
кода при использовании нескольких шрифтов, для определения разме-
ров строки используйте вызовы процедур TехtWidth и TехtHeight.

     Процедура OutText использует параметры вывода, установленные
процедурой SetTextJustify (выравнивание,  центрирование,  поворот
на 90 градусов и т.д.).

     Текущий указатель изменяется процедурой OutText только в том
случае,  если направление вывода текста горизонтальное  и  задано
выравнивание  по левой границе.  Направление вывода текста (гори-
зонтальное  или  вертикальное)  задается  с   помощью   процедуры
SetTextStyle, а выравнивание - с помощью процедуры SetTextJustify
(текущий указатель слева от строки,  центрируется или  расположен
справа от строки, записывается над строкой, под строкой).

     Если параметр горизонтального выравнивания текста,  установ-
ленный с помощью процедуры SetTextJustify,  равен CenterText  или
RightText,  то Y элементов текущего указателя (СРY) будут смещены
следующим образом:

     CPY := CPY + TextHeight(TextString)

     Если параметр горизонтального выравнивания текста,  установ-
ленный с помощью процедуры SetTextJustify,  равен LeftText,  то Х
элементов текущего указателя (СРХ) будут смещены следующим  обра-
зом:

     CPX := CPX + TextWidth(TextString)

     В следующем  примере  в  блоке  1 выводится ABCDEF и текущий
указатель перемещается (текст выводится горизонтально и  выравни-
вается слева),  в блоке 2 выводится ABC а DEF записывается справа
над этим текстом, так как текст выравнивается справа, аналогично,
в блоке 3 выводится текст ABC и над ним справа выводится DEF (так
как текст выводится вертикально).

     program CPupdate;
     uses Graph;
     var
       Driver, Mode : integer;
     begin
       Driver := Detect;
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
      { блок 1 }
      MoveTo(0, 0);
      SetTextStyle(DefaultFont, HorizDir, 1) { разм. симв. =1 }
      SetTextJustify(LeftText, TopText);
      OutText('ABC');      { текущий указатель изменяется }
      OutText('DEF');      { текущий указатель изменяется }
      { блок 2 }
      MoveTo(100, 50);
      SetTextStyle(DefaultFont, VerDir, 1) { разм. симв. =1 }
      SetTextJustify(LeftText, TopText);
      OutText('ABC');    { текущий указатель не изменяется }
      OutText('DEF');    { текущий указатель не изменяется }
      Readln;
      CloseGraph;
     end.

     Процедурой OutTextXY  текущий указатель никогда не изменяет-
ся.

     Выбираемый по умолчанию шрифт (шрифт с битовым  образом 8х8)
не границе экране не отсекается.  В этом случае,  если какая-либо
часть строки не может быть помещена на экран, текст просто не вы-
водится.  Следующие  операторы,  например,  не  приведут к выводу
текста:

     SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn);
     SetTextJustify(LeftText, TopText);
     OutTextXY(-5, 0);    { эта точка выходит за границу экрана }
     OutText(GetMaxX -1, 0, 'ABC'); { буква 'A' }
                                    { 'BC' не помещаются }

     Однако векторные шрифты отсекаются на границе экрана.

     Ограничения: Должен использоваться графический режим.

      См. также:    OutTextXY,    SetTextStyle,   SetTextJustify,
GetTextSettings, TextHeight, TextWidth.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
     begin

       Gd := Detect;
       InitGraph(gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
       OutText('Легко использовать');
       Readln;
       CloseGraph;
     end.

Процедура OutTextXY                                  модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Пересылает строку на устройство вывода.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure OutTextXY(Х, Y: Integer; S: String);

     Примечания: Строка, заданная параметром S, выводится в точке
(Х,У).  Если строка слишком длинная и выходит за  пределы  экрана
или текущей области просмотра, то она усекается.

     Процедура OutText  используется  для  вывода  текста в месте
расположения текущего указателя, процедура OutTextXY используется
для вывода текста в любом заданном месте экрана.

      См. также:     OutText,    SetTextStyle,    SetTextJustify,
GetTextSettings, TextHeight, TextWidth.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
     MoveTo(0,0);
    OutText('Неэффективно');
    OutTextXY(GetX,GetY,'Также неэффективно');
    OutTextXY(0,0,'Превосходно!');   {заменяет выведенное ранее}
    Readln;
    CloseGraph;
    end.

Процедура OvrClearBuf                              модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Очищает оверлейный буфер.

     Целевая платформа: Реальный режим.

     Описание: procedure OvrClearBuf;

     Примечания: Перед вызовом процедуры  из  оверлейного  буфера
выводятся все загруженные в данный момент оверлеи. Это приведет к
тому,  что при последующих  обращениях  к  оверлейным  программам
оверлеи будут загружаться из оверлейного  файла  (или  из  памяти
EMS).  Если процедура OvrClearBuf вызывается из оверлея, то перед
возвратом из OvrClearBuf этот оверлей будет немедленно перезагру-
жен.

     Подсистема управления  оверлеями  не  требует  от вас вызова
процедуры OvrClearBuf. Фактически, при обращениях к этой процеду-
ре  производительность вашей прикладной программы только ухудшит-
ся, поскольку это приведет к необходимости перезагрузки оверлеев.
Процедура  OvrClearBuf  предназначена  только для особых случаев,
например, для временного освобождения памяти, занимаемой оверлей-
ным буфером.

      См. также: OvrGetBuf, OvrSetBuf.

Процедура OvrGetBuf                                модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает текущий размер оверлейного буфера.

     Целевая платформа: Реальный режим.

     Описание: function OvrGetBuf; Longint;

     Примечания: Размер оверлейного буфера устанавливается с  по-
мощью  обращения к процедуре OvrSetBuf.  Первоначально оверлейный
буфер имеет минимальный возможный размер, соответствующий размеру
наибольшего  оверлея.  При  выполнении оверлейной программы буфер
такого размера выделяется автоматически.  Начальный размер буфера
может превышать 64К,  поскольку он включает в себя и код наиболь-
шего оверлея, и его корректировочную информацию.

     См. также: OvrInit, OvrInitEMS, OvrSetBuf.

     Пример:

     {$M 16384,65536,655360 }
     use Overlay;
     const
       ExtractSize = 49152; { 48K }
     begin
       OvrInit('EDITOR.OVR');
       Writeln('Начальный размер оверлейного буфера = ',
                OvrGetBuf, 'байт');
       OvrSetBuf(OvrGetBuf+ExtractSize);
       Writeln('Размер оверлейного буфера увеличен теперь до ',
                OvrGetBuf, 'байт');
     end.

Функция OvrGetRetry                                модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает текущий размер пробной области.

     Целевая платформа: Реальный режим.

     Описание: function OvrRetry: Longint;

     Примечания: Данная функция текущий размер  пробной  области,
значение которой устанавливается OvrSetRetry.

     См. также: OvrSetRetry.

Процедура OvrInit                                  модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Инициализирует подсистему управления оверлеями и
открывает оверлейный файл.

     Целевая платформа: Реальный режим.

     Описание: procedure OvrInit(FileName: String);

     Примечания: Если  в параметре имени файла FileName буквенная
метка дисковода или подкаталог не заданы,  то подсистема управле-
ния оверлеями ищет файл в текущем каталоге,  в каталоге, содержа-
щем файлы .EXE (при работе в DOS версии 3.х) и в  каталогах,  за-
данных  с  помощью переменной операционной среды PATH.  Возможные
ошибки могут быть получены с помощью переменной операционной сре-
ды OvrResult.  Значение  ovrOk  говорит  об  успешном завершении,
ovrError показывает,  что оверлейный файл имеет неправильный фор-
мат, или что программа не содержит оверлеев. Значение ovrNotFound
означает, что не найден оверлейный файл.

     В случае ошибки подсистема управления оверлеями остается не-
установленной и попытки вызова оверлейной  программы  приведут  к
ошибке этапа  выполнения 208 (Overlay manager not installed - ад-
министратор оверлеев не установлен).

     Процедура OvrInit должна  вызываться  перед  любыми  другими
процедурами подсистемы управления оверлеями.

      См. также: OvrGetBuf, OvrInitEMS, OvrSetBuf.

     Пример:

     use Overlay;
     const
     begin
       OvrInit('EDITOR.OVR');
       if OvrResult <> ovrOk then
       begin
         case OvrResult of
          ovrError: Writeln('Программа не содержит оверлеев');
          ovrNotFound: Writeln('Оверлейный файл не найден');
         end;
       Halt(1);
       end;
     end.

Процедура OvrInitEMS                               модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Если это возможно,  загружает оверлейный файл  в
память EMS.

     Целевая платформа: Реальный режим.

     Описание: procedure OvrInitEMS;

     Примечания: Если  имеется  драйвер дополнительной памяти,  и
существует достаточный объем такой памяти,  то  данная  процедура
загружает все оверлеи в расширенную память и закрывает оверлейный
файл. Последующие загрузки оверлеев сводятся просто к быстрой пе-
ресылке их из памяти в память. Процедура OvrInitEMS устанавливает
также процедуру выхода,  которая при завершении работы  программы
автоматически освобождает выделенную память EMS.

     Возможные ошибки  могут  быть  получены с помощью переменной
операционной среды OvrResult.  Значение ovrOk говорит об успешном
завершении,  ovrError показывает,  что процедура OvrInit заверши-
лась неудачно или не была вызвана,  ovrIOError говорит о том, что
при чтении оверлейного файла произошла ошибка, ovrNoEMSDriver оз-
начает,  что не найден драйвер расширенной памяти, ovrNoEMSMemory
- что для загрузки оверлейного файла в памяти EMS нет достаточно-
го пространства.

     В случае ошибки подсистема управления оверлеями  будет  про-
должать работу, но оверлеи будут считываться с диска.

     Драйвер расширенной  памяти должен отвечать соглашениям фирм
Lotus, Intel и Microsoft (Expanded Memory Specification  -  EMS).
Если вы используете псевдодиск,  размещенный в дополнительной па-
мяти, то нужно убедиться в том,  что команда, загружающая в файле
CONFIG.SYS  драйвер виртуального диска,  оставляет некоторый сво-
бодный объем расширенной памяти,  который может использовать ваша
прикладная задача.

      См. также: OvrGetBuf, OvrInit, OvrSetBuf, OvrReault.

     Пример:

     use Overlay;
     const
     begin
       OvrInit('EDITOR.OVR');
       if OvrResult <> ovrOk then
       begin
          Writeln('Подсистема управления оверлеями',
    ' не установлена из-за ошибки');
          Halt(1);
       end;
       OvrInitEMS;
       case OvrResult of
        ovrIOError: Writeln('Ошибка ввода-вывода при чтении',
                             ' оверлейного файла');
        ovrNoEMSDriver: Writeln('Не установлен драйвер',
                                 ' дополнительной памяти');
        ovrNoEMSMemory('Не хватает объема памяти EMS');
       else
        Writeln('Для более быстрой работы с оверлеями',
                 ' используется память EMS');
      end;
     end.

Процедура OvrSetBuf                                модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает размер оверлейного буфера.

     Целевая платформа: Реальный режим.

     Описание: procedure OvrSetBuf(BufSize: Longint);

     Примечания: Параметр BufSize должен быть  больше  или  равен
начальному размеру оверлейного буфера и меньше или равен MemAvail
+ OvrGetBuf. Начальный размер оверлейного буфера представляет со-
бой размер, возвращаемый процедурой OvrGetBuf перед обращениями к
OvrSetBuf.  Если заданный размер превышает текущий размер,  то из
начала  динамически  распределяемой  области добавляется дополни-
тельная память, и, таким образом, размер динамически распределяе-
мой  области  памяти уменьшается.  Если же заданный размер меньше
текущего, то избыточное пространство присоединяется к динамически
распределяемой области.

     Процедура OverSetBuf требует, чтобы динамически распределяе-
мая область памяти была пустой.  Если с помощью  процедур  New  и
GetMem уже выделены динамические переменные, то возникает ошибка.
Поэтому необходимо убедиться в том,  что процедура OvrSetBuf  ис-
пользуется перед вызовом процедуры InitGraph, поскольку процедура
InitGraph выделяет память в динамически  распределяемой  области,
после чего все обращения к процедуре OvrSetBuf игнорируются.

     Если для увеличения размера оверлейного буфера вы используе-
те процедуру OvrSetBuf,  то для соответствующего увеличения мини-
мального  размера  динамически распределяемой области в программу
необходимо также включить директиву компилятора $M.

     Возможные ошибки могут быть получены  с  помощью  переменной
OvrResult.   Значение   ovrOk  говорит  об  успешном  завершении,
ovrError - о том,  что процедура OvrInit завершилась неудачно или
не была  вызвана,  что  значение BufSize слишком мало или что для
увеличения размера оверлейного буфера не хватает памяти.

      См. также: OvrGetBuf, OvrInit, OvrInitEMS, OvrResult, конс-
танты ovXXXX.

     Пример:

     {$M 17384,65536,655360}
     use Overlay;
     const
       ExtractSize = 49152; { 48K }
     begin
       OvrInit('EDITOR.OVR');
       OvrSetBuf(OvrGetBuf + ExtactSize);
     end.

Процедура OvrSetRetry                              модуль Overlay
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает размер пробной области в  оверлей-
ном буфере.

     Целевая платформа: Реальный режим.

     Описание: procedure OvrSetRetry(Size: Longint);

     Примечания: Если  после размещения оверлея в буфере до конца
буфера остается Size байт,  он автоматически помещается в пробную
область. Любое  свободное  пространство в оверлейном буфере расс-
матривается как часть пробной области.  В целях  совместимости  с
более ранними версиями администратора оверлеев по умолчанию проб-
ная область имеет нулевой размер, что приводит к запрету механиз-
ма проб/повторов.

     Эмпирической формулы  для  определения  оптимального размера
пробной области не существует,  однако  эксперименты  показывают,
что наилучшие  результаты дают значения от 1/3 до 1/2 оверлейного
буфера.

     См. также: OvrGetRetry.

     Пример:

     OvrInit'PROG.OVR');
     OvrSetBuf(BufferSize);
     OvrSetRetry(BufferSize div 3);

Процедура PackTime                                     модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует запись DateTime (дата и время) в че-
тырехбайтовое значение, конвертируя длинный целый тип представле-
ния даты и времени, используемый процедурой SetTime.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание:

     { DOS }
     procedure PackTime(var DT: DateTime; var Time: Longint);

     { Windows }
     procedure PackTime(var DT: TDateTime; var Time: Longint);

     Примечания: Запись DateTime описана в модуле Dos.  Для полей
данной записи не выполняется проверка на правильность границ. Ес-
ли вы пишете программу,  используя модуль WinDos,  применяйте тип
TDateTime. См. описание данного типа.

      См. также:   UnPackTime,   GetTime,   SetTime,    GetFTime,
SetFTime.


Функция ParamCount                                  модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  число  параметров,  переданных в ко-
мандной строке.

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: function ParamCount: Word;

     Примечания: Разделителями служат пробелы и  символы  табуля-
ции.

     См. также функцию ParamStr.

     Пример:

     { в Windows используйте WinCrt }
     begin
       if ParamCount < 1 then
          Writeln('В командной строке нет параметров');
       else
          Writeln(ParamCount,' параметров');
     end.

Функция ParamStr                                    модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает заданный параметр командной строки.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function РаrамStr(Indx): String;

     Примечания: Параметр  Indx представляет собой выражение типа
Word.. Данная функция возвращает из  командной  строки  параметр,
номер которого задается параметром Indx,  или пустую строку, если
Indx равняется нулю или больше, чем РаrамCоunt.

      См. также: ParamCount.

     Пример:

     { в Windows используйте WinCrt }
     var i : word;
     begin
       for i := 1 to ParamCount do
            Writeln(PaamStr(i));
     end.

Функция Pi                                          модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  значение 3.1415926535897932385 (зна-
чение числа Pi).

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function Pi: Real;

     Примечания: В зависимости от того,  работает ли компилятор в
режиме с сопроцессором 8087 (80287,  80387),  или только в режиме
программного обеспечения, точность может меняться.

Процедура PieSlice                                   модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Рисует и заполняет цветом  сектор  круга.  Точка
(Х,Y) при этом используется в качестве центра окружности,  а сек-
тор рисуется  от  начального  угла  (SStart)  до  конечного  угла
(SEnd).

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: procedure PieSlice(X, Y: Integer; SStart, SEnd, R:
Word);

     Примечания: Контур сектора вычерчивается текущим  цветом,  а
при закрашивании используются тип и цвет закраски,  заданные про-
цедурами SetFillStyle и SetFillPattern.

     В каждом графическом драйвере содержится коэффициент относи-
тельного удлинения, который используется в процедурах Circle, Arс
и РieSlice. Начальный угол, равный 0 и конечный угол, равный 359,
задают вычерчивание полной окружности.

     Ограничения: Должен использоваться графический режим.

      См. также:    Arc,    Circle,    Ellipse,     GetArcCoords,
GetAspectRatio, Sector,       SetFillStyle,       SetFillPattern,
SetGraphBufSize.

     Пример:

     uses Graph;
     const
       Radius = 30;
     var
       Gr, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
     PieSlice(100, 100, 0, 270, Radius);
     Readln;
     CloseGraph;
     end.

Функция Pos                                         модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Ищет подстроку в строке.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function Pos(Sub, S: String): Byte;

     Примечания: Параметры Sub и S являются выражениями строково-
го типа.  Данная функция ищет подстроку, заданную параметром Sub,
в строке S и возвращает целое значение,  являющееся позицией пер-
вого символа подстроки в строке S.  Если подстрока не найдена, то
функция возвращает значение 0.

     См. также: Concat, Copy, Delete, Insert, Length.

     Пример:

     var
      s : string;
     begin
      s := '    123.5';             { преобразует пробелы в нули }
      while Pos(' ',s) > 0  do
        s[Pos(' ',s)] := '0';
      end.

Функция Pred                                        модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает предшествующее значение аргумента.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function Pred(x);

     Примечания: Параметр  x - выражение перечислимого типа.  Ре-
зультат,  имеющий тот же тип,  что и x,  является  предшествующим
значением x.

      См. также: Succ, Dec.

Функция Ptr                                         модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует адрес, заданный в виде базового сег-
мента и смещения, в значение типа указатель.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function Ptr(Seg, Offs: Word): Pointer;

     Примечания: Параметры Seg (сегмент) и Offs (смещение) предс-
тавляют собой выражения типа Word. Результатом является указатель
на адрес,  заданный параметрами Seg и Offs.  Как и указатель типа
nil, результат функции Рtr совместим по присваиванию с указателя-
ми любых типов.

     Результат функции можно проанализировать, например:

     if Prt($40, $49)^ = 7 then
       Writeln('видеорежим = моно');

     См. также: Addr.

     Пример:

     var
       p^ : byte;
     begin
       p := Ptr($0040, $49);
       Writeln('Текущим видеорежимом является ', p^);
     end;

Процедура PutImage                                   модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выводит из буфера на экран двоичный образ задан-
ной области экрана.

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: procedure PutImage(х,  у: Integer; var Mass; Oper:
Word);

     Примечания: Точка с координатами  (х,у)  определяет  верхний
левый угол  прямоугольной области экрана.  Параметр Mass является
нетипизированным  параметром,  который определяет ширину и высоту
области экрана. Параметр Oper определяет, какая двоичная операция
будет  использоваться  для вывода двоичного образа области на эк-
ран (см. перечень операций BitBlt).

     Каждая константа соответствует двоичной операции.  Например,
PutImage(x,y,BitMap,NormalPut) выводит на экран  двоичный  образ,
сохраненный в массиве BitMap, начиная с точки (x,y). При этом для
вывода каждого байта двоичного образа используется инструкция ас-
семблера МОV.

     Аналогично:

     PutImage(x,y,BitMap,XORPut);

выводит на экран двоичный образ,  сохраненный в  массиве  BitMap,
начиная с точки (x,y). При этом для вывода каждого байта двоично-
го образа используется инструкция ассемблера ХОR. Этот метод час-
то  используется  для мультипликации и перемещения изображения по
экрану.

     PutImage(x,y,BitMap,NotPut);

инвертирует биты в BitMap и выводит двоичный образ, сохраненный в
BitMap,  начиная с точки (x,y). При этом для каждого байта двоич-
ного образа используется инструкция ассемблера MOV.  Таким  обра-
зом, двоичный образ при выводе получает негативное по отношению к
исходному изображение.

     Заметим, что процедура PutImage никогда не выполняет отсече-
ние изображения на границах текущей области просмотра.  Более то-
го, за одним исключением оно не отсекается также на границе всего
экрана. В этом случае, если какая-либо часть изображения не поме-
щается в поле экрана, оно вообще не выводится. В следующем приме-
ре первый образ  экрана  будет  выведен,  а  средние  три  вызова
PutImage не приведут к выводу изображения.

     program NoClip;
     uses Graph;
     var
       Driver, Mode : integer;
       p : pointer;
     begin
       Driver := Detect;
       InitGraph(Driver, Mode, '');
       if GraphResult <> grOk then
          Halt(1);
       SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn);
       GetMem(p, ImageSize(0, 0, 0, 99, 49));
       PieSlice(50, 25, 0, 360, 45);
       GetImage(0, 0, 99, 49, p^);  { ширина = 100,
                                      высота = 50 }
       ClearDevice;
       PutImage(GetMaxX - 99, 0, p^, NormalPut);
                { x + высота > GetMaxX }
       PutImage(-1, 0, p^, NormalPut); { -1,0 не находится на
                                         экране }
       PutImage(0, -1, p^, NormalPut); { 0,-1 не находится на
                                         экране }
       PutImage(0, GetMaxY - 30, p^, NormalPut)
                { выведет 31 "строку" }
       Readln;
       CloseGraph;
       end.

     В последнем обращении к PutImage высота отсекается по нижне-
му  краю экрана, и часть изображения выводится.  Это единственный
случай,  когда процедура PutImage отсекает выводимое изображение.

     Ограничения: Должен использоваться графический режим.

      См. также: GetImage, ImageSize.

     Пример:

     uses Graph;
     var
        p  : pointer;
      Size : word;
     begin
      Gd := Detect;
      InitGraph(Gd, Gm, '');
      if GraphResult <> grOk then
         Halt(1);
      Bar(0, 0, GetMaxX, GetMaxY);
      Size := ImageSize(10,20,30,40);
      GetMem(p, Size);  { выделить память в динамически распре-
                           деляемой области }
      GetImage(10,20,30,40,p^); { считать двоичный образ }
      PutImage(100,100,p^,NormalPut); { скопировать двоичный
                                          образ }
      Readln;
      CloseGraph;
     end.

Процедура PutPixel                                   модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Строит элемент изображения в точке (x,y).

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: procedure PutPixel(x, y: Integer; Pixel: Word);

     Примечания: Строит в (x,y) точку,  цвет которой определяется
параметром Pixel.

     Ограничения: Должен использоваться графический режим.

      См. также: GetImage, GetPixel, PutImage.

     Пример:

     uses Graph;
     var
        p  : pointer;
     Color : word;
     begin
      Gd := Detect;
      InitGraph(Gd, Gm, '');
      ig GraphResult <> grOk then
         Halt(1);
      Color := GetMaxColor;
     Randomize;
     repeat
       PutPixel(Random(100),Random(100),Color); { строит
                                                  "звездочки" }
       Delay(10);
     until KeyPressed;
     Readln;
     CloseGraph;
     end.

Функция Random                                      модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает случайное число.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function Random[ (Range: Word) ];

     Примечания: Если параметр Range (диапазон) не задан,  то ре-
зультатом будет вещественное число x в диапазоне 0 <= х < 1. Если
задан  параметр Range,  то он должен представлять собой выражение
целого типа, а результатом будет случайное число длиной в слово в
диапазоне  0  <=  х  < N,  где N - значение,  заданное параметром
Range. Если параметр Range меньше или равен нулю, то возвращаемое
значение будет равно нулю.

     Генератор случайных  чисел  Random должен инициализироваться
обращением к процедуре Randomize.

     См. также: Randomize.

     Пример:

     uses Crt;
      begin
        Randomize;
        repeat
      { вывести текст со случайно выбранным цветом }
        TexAttr := Random(256);
        Write('!');
      until KeyPressed;
     end.

Процедура Randomize                                 модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Инициализирует  встроенный  генератор  случайных
чисел случайным значением.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure Randomize;

     Примечания: Случайное значение получается от системного тай-
мера.  Число, получаемое в результате работы генератора случайных
чисел, хранится в предописаной переменной с именем RandSeed.

      См. также: Random.

Процедура Read (текстовые файлы)                    модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Считывает одно или более значений  из текстового
файла в одну или более переменных.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure Read( [ var f:  Text; ] v1, [, v2,...,vn
] );

     Примечания: Параметр  f  (если  он указан) является файловой
переменой,  соответствующей текстовому файлу.  Если он опущен, то
подразумевается  использование  стандартной  файловой  переменной
Input. Каждый параметр v является переменной символьного, строко-
вого, целого или вещественного типа.

     * В случае строкового типа процедура Rеаd считывает из файла
       один  символ и присваивает его переменной.  Если перед вы-
       полнением процедуры Rеаd функция Eof(f) принимала значение
       Truе, то переменной присваивается значение Chr(26) (символ
       Ctrl-Z).  Если функция Eoln(f) принимала истинное значение
       (Truе),  то переменной присваивается значение Chr(3) (сим-
       вол возврата каретки). Следующая операция Rеаd начнется со
       следующего символа в файле.

     * В  случае  переменной  целого  типа процедура Rеаd ожидает
       поступления последовательности символов,  образующих число
       со знаком (синтаксис см.  в разделе "Числа" Главы 2 "Руко-
       водства по языку").  Любые пробелы,  знаки  табуляции  или
       метки конца строки,  предшествующие числовой строке,  про-
       пускаются. Считывание прекращается при обнаружении первого
       пробела, символа табуляции или метки конца строки, которые
       следуют за числовой строкой,  или в том случае, если функ-
       ция  Eof(f) принимает значение Truе.  Если числовая строка
       не соответствует ожидаемому формату,  то происходит ошибка
       ввода-вывода. В противном случае переменной  присваивается
       значение.  Если функция Eof(f) перед выполнением процедуры
       Rеаd имела значение Truе,  или функция Eof(f) приняла зна-
       чение Truе при пропуске начальных пробелов, знаков табуля-
       ции или меток конца строки,  то  переменной  присваивается
       нулевое значение.  Следующая операция Rеаd начнется с про-
       бела,  символа табуляции или метки конца строки,  которыми
       завершилась числовая строка.

     * В случае переменной вещественного типа процедура Rеаd ожи-
       дает поступления последовательности символов,  которые об-
       разуют число (синтаксис см. в разделе "Числа" Главы 2 "Ру-
       ководства  по языку"),  но шестнадцатиричное представление
       не допускается.  Любые пробелы,  знаки табуляции или метки
       конца строки,  предшествующие числовой строке, пропускают-
       ся. Считывание прекращается при обнаружении первого пробе-
       ла, символа табуляции или метки конца строки, которые сле-
       дуют за числовой строкой,  или в том случае,  если функция
       Eof(f)  принимает  значение Truе.  Если числовая строка не
       соответствует ожидаемому  формату,  то  происходит  ошибка
       ввода-вывода.  В противном случае переменной присваивается
       значение.  Если функция Eof(f) имела значение  Truе  перед
       выполнением  процедуры  Rеаd,  или  функция Eof(f) приняла
       значение Truе при пропуске начальных пробелов,  знаков та-
       буляции или меток конца строки, то переменной присваивает-
       ся нулевое значение.  Следующая операция Rеаd  начнется  с
       пробела, символа табуляции или метки конца строки, которы-
       ми завершилась числовая строка.

     * В случае переменной строкового типа процедура Rеаd  считы-
       вает  все символы,  вплоть до следующей метки конца строки
       (но не включая ее), или пока функция Eof(f) не примет зна-
       чение  Truе.  Переменной  присваивается получившаяся в ре-
       зультате  символьная  строка.  Если  длина  результирующей
       строки превышает длину, максимально допустимую для строко-
       вой переменной,  то она усекается. Следующая операция Rеаd
       начинается с метки конца строки,  которой завершилась пре-
       дыдущая строка.

     * Когда разрешен расширенный синтаксис, Read можно использо-
       вать  для считывания строк с завершающим нулем в соответс-
       твующие массивы.  При  наличии  символьного  массива  вида
       array[0..N] of Char Read считывает до N символов, или пока
       Eoln(F) или Eof(F) не примут значение True, а затем добав-
       ляют к строке нулевой завершающий символ NULL (#0).

     При указании  директивы  компилятора  {$I-} функция IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Процедура Rеаd со строковой переменной не дела-
ет после считывания пропуск до следующей строки. Поэтому для счи-
тывания  последовательности  строк нельзя использовать последова-
тельные обращения к процедуре Rеаd, поскольку при этом вы никогда
не перейдете дальше первой строки. После первого обращения к про-
цедуре Rеаd последующие операции Rеаd  будут  обнаруживать  метку
конца строки и возвращать строку нулевой длины.  Поэтому для счи-
тывания последовательности строк используйте обращения к процеду-
ре Rеаdln.

      См. также: Readln, ReadKey, Write, Writeln.



Процедура Read (типизированные файлы)               модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Считывает в переменную элемент файла.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure Read(f, v1, [, v2,...,vn]);

     Примечания: Параметр  f является файловой переменной,  соот-
ветствующей любому типу файла, кроме текстового, а каждый элемент
v представляет собой переменную того же типа, что и элемент файла
f.  При каждом считывании в переменную текущая  позиция  в  файле
продвигается к следующему элементу. Попытка считывания следующего
элемента файла в тот момент, когда текущая позиция файла находит-
ся в конце файла (то есть когда Eof(f) имеет значение Truе) явля-
ется ошибкой.

     При указании директивы компилятора  {$I-}  функция  IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Файл должен быть открыт.

     См. также: Write.

Функция ReadBuf                                     модуль WinCrt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Считывает из окна CRT строку.

     Целевая платформа: Windows.

     Описание: function   ReadBuf(Buffer:  PChar;  Count:  Word):
Word;

     Примечания: Параметр Buffer указывает на буфер строки, в ко-
тором может поместиться до Count символов.  Можно ввести до Count
- 2 символов, а при нажатии пользователем клавиши Enter автомати-
чески добавляется маркер конца строки (#13 и #12).  Если CheckEOF
равно True,  пользователь может также завершить строку ввода, на-
жав клавиши Ctrl+Z. К строке в этом случае добавится маркер конца
файла (#26).  Возвращаемым значением будет число считанных симво-
лов, включая маркер конца файла.

     См. также ReadKey.

Функция ReadKey                                        модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Считывает символ с клавиатуры.

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: function ReadKey: Char;

     Примечания: Считываемый  символ  не  отображается на экране.
Если перед обращением к функции RеаdКеу функция  КеyРressed имела
значение Truе, то символ считывается немедленно, в противном слу-
чае функция ожидает нажатия клавиши.

     Специальные клавиши  на  клавиатуре компьютера РС генерируют
расширенные коды клавиш. Специальными клавишами являются функцио-
нальные клавиши,  клавиши управления курсором, клавиши Alt и т.д.
При нажатии специальной клавиши функция RеаdКеу возвращает снача-
ла нулевой символ (#0),  а затем расширенный код клавиши. Нулевые
символы не могут быть получены никаким другим путем. Этим обеспе-
чивается то,  что следующим символом будет расширенный код клави-
ши.

     В следующем  фрагменте  программы  в  переменную с именем Ch
считывается символ или расширенный код клавиши и  для  переменной
FuncKey булевского типа устанавливается значение Truе,  если сим-
вол является кодом специальной клавиши.

     Ch := ReadKey;
     if Ch <> #0 then FuncKey := False else
     begin
       FuncKey := True;
       Ch := ReadKey;
     end;

     Переменная ChесkВrеаk  управляет  тем,  будет  ли  программа
прекращать  работу  при нажатии клавиш Ctrl+Вrеаk,  или они будут
рассматриваться,  как  любые  другие  клавиши.  Когда  переменная
ChесkВrеаk  имеет значение False,  функция ReаdКеy возвращает для
клавиш Ctrl+Вrеаk значение Ctrl+С (#3).

      См. также: KeyPressed.

Функция ReadKey                                     модуль WinCrt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Считывает символ с клавиатуры.

     Целевая платформа: Windows

     Описание: function ReadKey: Char;

     Примечания: Функция ReadKey поддерживает только  стандартные
коды ASCII.  Расширенные коды клавиш, например, клавиш управления
курсором, не поддерживаются.

      См. также: KeyPressed.

Процедура ReadLn                                    модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выполняет процедуру Rеаd, затем переходит к сле-
дующей строке файла.

     Целевая платформа: Реальный режим. Защищенный режим, Windows

     Описание: procedure Readln([ var f:  Text; ] v1 [, v2,...,vn
] );

     Примечания: Процедура  RеаdLn является расширением процедуры
Rеаd и определена для текстовых файлов. После выполнения процеду-
ры Rеаd процедура RеаdLn делает пропуск до начала следующей стро-
ки.

     Вызов функции RеаdLn(f) без параметров приводит к  перемеще-
нию  текущей  позиции  файла на начало следующей строки (если она
имеется,  в противном случае происходит переход к  концу  файла).
Функция  RеаdLn без списка параметров полностью соответствует об-
ращению RеаdLn(Input).

     При указании директивы компилятора  {$I-}  функция  IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Функция работает только для  текстовых  файлов,
включая стандартный ввод. Файл должен быть открыт для ввода.

      См. также: Read.

Процедура Rectangle                                  модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Рисует  прямоугольник,  используя текущий цвет и
тип строки.

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: procedure Rectangle(x1, y1, x2, x2: Integer);

     Примечания: Точка с координатами (х1,у1)  определяет верхний
левый угол прямоугольника, а точка с координатами (х2,у2) опреде-
ляет нижний правый угол (0 <= х1 < х2 <= GetМахХ и 0 <= у1  <  у2
<= GetМахY).

     При вычерчивании прямоугольника будут использоваться текущий
тип строки    и   цвет,   которые   устанавливаются   процедурами
SetLineStyle и SetColor.  Чтобы определить, копируется ли прямоу-
гольник  на экран,  или для его вывода используется операция XOR,
вызовите SetWriteMode.

     Ограничения: Должен использоваться графический режим.

     См. также: Bar, Bar3D, GetViewSettings, InitGraph, SetColor,
SetLineStyle, SetWriteMode, SetViewPort, GetViewSettings.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       x1, y1, x2, y2 : integer;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
          Halt(1);
       Randomize;
       repeat
           x1 := Random(GetMaxX);
           y1 := Random(GetMaxY);
           x2 := Random(GetMaxX - x1) + x1;
           y2 := Random(GetMaxY - y1) + y1;
       Rectangle(x1,y1,x2,y2);
      until KeyPressed;
        CloseGraph;
     end.


Функция RegisterBGIdriver                            модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Регистрирует в графической  системе  загруженный
пользователем или скомпонованный с программой драйвер формата BGI
(формат фирмы Borland).

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: function    RegisterBGIdriver(Driver:    Pointer):
Integer;

     Примечания: В случае ошибок возвращаемое значение меньше ну-
ля.  В  противном  случае возвращается внутренний номер драйвера.
Эта программа позволяет пользователю загрузить  файл  драйвера  и
зарегистрировать  драйвер,  передав  его  адрес  в памяти функции
RegisterBGIdriver.  После этого драйвер может непосредственно ис-
пользоваться процедурой InitGraph, а не загружаться с диска моду-
лем Graph. Драйвер пользователя можно загрузить с диска в динами-
чески распределяемую область памяти или преобразовать в файл .OBJ
(с помощью утилиты BINOBJ.EXE),  после чего скомпоновать с  прог-
раммой в файл .EXE.

     Возможной возвращаемой ошибкой является grInvalidDriver (не-
допустимый графический драйвер).

     Следующая программа  загружает  в динамически распределяемую
область памяти драйвер CGA, регистрирует его в графической систе-
ме и вызывает процедуру InitGraph.

     program LoadDriv;
      uses Graph;
     var
       Driver, Mode : Integer;
       DriverF : file;
       DriverP : pointer;
     begin
     { открыть файл драйвера, считать его в память и
       зарегистрировать }
       Assign(DriverF, 'CGA.BGI');
       Reset(DriverF, 1);
       GetMem(DriverP, FileSize(DriverF));
       if RegisterBGIdriver < 0 then
       begin
         Writeln('Ошибка регистрации драйвера: ',
                  GraphErrorMSG(GraphResult));
         Halt(1);
       end;
       { инициализация графики }
       Driver := CGA;
       Mode := CGAHi;
       InitGraph(Driver,Mode,'');
       if GraphResult <> grOk then
          Halt(1);
       OutText('Драйвер загружен программой пользователя');
       Readln;
       CloseGraph;
      end.

     Эта программа начинает работу с загрузки драйвера CGA с дис-
ка и регистрации его с помощью модуля Graph.  Затем для инициали-
зации  графической  системы  выполняется  обращение  к  процедуре
InitGraph. Вы можете при желании разместить один или более файлов
непосредственно в файле .EXE.  При этом графические драйверы, ко-
торые требуются вашей программе, окажутся встроенными и для рабо-
ты потребуется только файл .EXE.  Процесс размещения  драйвера  в
выполняемом файле довольно прост и заключается в следующем:

     1. Выполнить для файла (или файлов) программу BINOBJ.

     2. Скомпоновать  результирующие файлы *.OBJ с вашей програм-
        мой.

     3. Перед вызовом процедуры Init  зарегистрировать  скомпоно-
        ванные файлы (файл) драйвера.

     Более подробное  описание  этого процесса можно найти в ком-
ментариях,  содержащихся в шапке программы-примера GRLINK.PAS  на
диске 3.  Документация  по  утилите  BINOBJ  содержится  в  файле
UTILS.DOC на дистрибутивном диске.

     Имеется также возможность регистрации в системе файлов шриф-
тов (см. описание функции RegisterBGIfont).

     Ограничения: Заметим,  что драйвер должен быть зарегистриро-
ван  перед  обращением  к  процедуре  InitGraph.   Если   функция
RegisterBGIdriver вызывается,  когда средства графики уже активи-
зированы, то возвращается grError.

      См. также: InitGraph, InstallUserDriver, RegisterGBIfont.



Функция RegisterBGIfont                              модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Регистрирует загружаемый пользователем или ском-
понованный  с программой шрифт формата BGI (формат фирмы Borland)
в графической системе.

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: function RegisterBGIfont(Font: Pointer): Integer;

     Примечания: В  случае  ошибки  возвращаемое  значение  будет
меньше 0.  В противном случае возвращается внутренний номер шриф-
та.  Эта программа позволяет пользователю загрузить файл шрифта и
"зарегистрировать" шрифт Font,  передав его адрес в памяти проце-
дуре RegisterBGIfont.  После этого данный шрифт можно выбирать  с
помощью обращения к процедуре SetTextStyle. Выбранный шрифт будет
непосредственно использоваться без необходимости загрузки  его  с
диска модулем Graph. Зарегистрированный пользователем шрифт можно
загрузить с диска в динамически распределяемую область памяти или
преобразовать (с помощью утилиты BINOBJ.EXE) в файл .OBJ, а затем
скомпоновать с программой в выполняемый файл.

     Для загрузки и регистрации файлов шрифтов  имеется несколько
причин.  Во-первых, модуль Graph в каждый момент времени хранит в
памяти только один векторный шрифт. Если у вас имеется программа,
которая должна быстро переключаться с одного шрифта не другой, то
возможно  вы предпочтете в начале программы выполнить регистрацию
и  загрузку  шрифта.  При  этом   при   обращении   к   процедуре
SetTextStyle  модулю  Graph не понадобится каждый раз загружать и
разгружать шрифт.

     Во-вторых, вы  можете захотеть разместить файл шрифта непос-
редственно в файле .EXE.  Таким образом, файл шрифта, который ис-
пользует ваша программа, окажется встроенным, и для запуска прог-
раммы  потребуется  только выполняемый файл (файл .EXE).  Процесс
размещения файла шрифта в выполняемом файле довольно прост:

     1. Выполнить для файла (или файлов) программу BINOBJ.

     2. Скомпоновать результирующие файлы ,OBJ с  вашей  програм-
        мой.

     3. Перед вызовом процедуры Init  зарегистрировать  скомпоно-
        ванные файлы (файл) драйвера.

     Более подробное описание этого процесса можно найти  в  ком-
ментариях,  содержащихся  в шапке программы-примера GRLINK.PAS на
диске 3.  Документация  по  утилите  BINOBJ  содержится  в  файле
UTILS.DOC на дистрибутивном диске.

     Заметим, что в используемый по умолчанию  шрифт  (с  битовой
матрицей  8х8) встроен в модуль GRAPH.TPU и,  таким образом,  все
время находится в памяти. При выборе и загрузке векторного шрифта
ваша программа имеет возможность переключаться между используемым
по умолчанию и векторным шрифтом без необходимости  перезагружать
какой-либо из них.

     Можно также регистрировать  файлы  драйверов  (см.  описание
функции RegisterBGIdriver).

     Следующая программа загружает в  динамически  распределяемую
область шрифт Triplex,  регистрирует его в графической системе, а
затем предоставляет возможность выбора между этим шрифтом и  дру-
гим  штриховым  шрифтом,  который  модуль Graph загружает с диска
(SansSerifFont).

     program LoadFont;
     uses Graph;
     var Driver, Mode : integer;
         FontF : file;
         FontP : pointer;
     begin
     { открыть файл шрифта, считать его в память и
       зарегистрировать }
       Assign(FontF, 'TRIP.CHR');
       Reset(FontF, 1);
       GetMem(FontP, FontP^, FileSize(FontF));
       if RegisterBGIfont(FontP) < 0 then
       begin
         Writeln('Ошибка регистрации шрифта: ',
                  GraphErrorMsg(GraphResult));
         Halt(1);
       end;
       { инициализировать графику }
       Driver := Detect;
       InitGraph(Driver, Mode, '..\');
       if GraphResult < 0 then
          Halt(1);
       Readln;
       { выбрать зарегистрированный шрифт }
       SetTextStyle(TriplexFont, HorizDir, 4);
       OutText('Программой загружен шрифт Triplex');
       MoveTo(0, TextHeight('a'));
       Readln;
       { выбрать шрифт который должен быть загружен с диска }
       SetTextStyle(SanSerifFont, HorizDir, 4);
       OutText('Диск должен быть готов...');
       MoveTo(0, GetY + TextHeight('a'));
       Readln;
       { выбрать зарегистрированный шрифт (уже загруженный
         в память)}
       SetTextStyle(TriplexFont, HorizDir, 4);
       OutText('Программой снова выбран шрифт Triplex');
       Readln;
       CloseGraph;
     end.

     Программа начинает свою работу с  загрузки  с  диска  шрифта
Triplex и регистрации его модулем Graph.  Затем для инициализации
графической системы вызывается  процедура  InitGraph.  Проверьте,
есть ли обращение к диску и нажмите клавишу Enter.  Поскольку те-
перь шрифт Triplex уже загружен в память и зарегистрирован, моду-
лю  Graph не надо считывать его с диска (таким образом,  отпадает
необходимость обращения к дисководу). Затем программа активизиру-
ет шрифт SansSerifFont, загружая его с диска (он не зарегистриро-
ван). Снова нажмите клавишу Enter и посмотрите, есть ли обращение
к  диску  (при обращении к диску загорается лампочка-индикатор на
панели  компьютера).  Наконец,  программа  снова  выбирает  шрифт
Triplex. Поскольку он уже зарегистрирован, то при этом программа,
когда вы нажмете клавишу Enter, обращаться к диску не будет.

      См. также:  InitGraph,  InstallUserDriver, InstallUserFont,
RegisterGBIfont, SetTextStyle.



Процедура RemoveDir                                 модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Удаляет пустой подкаталог.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure RemoveDir(Dir: PChar);

     Примечания: Удаляется подкаталог по маршруту,  заданному па-
раметром Dir.  Об ошибках (таких как несуществующий  каталог  или
непустой каталог) сообщается в переменной DosError.

     Пустой подкаталог удаляет также подпрограмма RmDir, но вмес-
то строки с завершающим нулем она воспринимает строку Паскаля.

     См. также: GetCurDir, GreateDir, SetCurDir.

Процедура Rename                                    модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Переименовывает внешний файл.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure Rename(var f; NewName);

     Примечания: Параметр  f представляет собой файловую перемен-
ную, соответствующую любому файловому типу.  Параметр NewName яв-
ляется выражением строкового типа или типа PChar  (если  разрешен
расширенный синтаксис).  Внешнему файлу,  связанному с переменной
f, присваивается новое имя, заданное параметром NewName. Дальней-
шие  операции с f будут выполняться с внешним файлом с новым име-
нем.

     При указании директивы компилятора  {$I-}  функция  IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Процедура Rename не должна  использоваться  для
открытого файла.

      См. также: Erase.

Процедура Reset                                     модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Открывает существующий файл.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure Reset(f [: file; Size : Word ] );

     Примечания: Параметр  f является файловой переменной,  соот-
ветствующей любому типу файла.  Он должен быть связан  с  внешним
файлом с  помощью процедуры Assign.  Параметр размера Size предс-
тавляет собой необязательное выражение длиной  в  слово  и  может
указываться только в том случае, если f является нетипизированным
файлом.

     Процедура Reset открывает существующий внешний файл, имя ко-
торого было присвоено f. Если внешний файл с указанным именем от-
сутствует, то это является ошибкой. Если файл f уже открыт, то он
сначала закрывается, а затем открывается вновь. Текущая позиция в
файле устанавливается на начало файла. Если f было присвоено пус-
тое имя (например,  Assign(f'')),  то после обращения к процедуре
Reset  f будет ссылкой на стандартный файл ввода (стандартный ка-
нал 0).

     Если f - текстовый файл,  то он становится доступным  только
по  чтению.  После  обращения  к процедуре Reset Eof(f) принимает
значение Truе,  если файл пуст, и значение False в противном слу-
чае.

     Если f является нетипизированным файлом,  то  параметр  Size
определяет размер записи, который должен использоваться при пере-
даче данных.  Если этот параметр опущен,  то  он  подразумевается
равным по умолчанию 128 байтам.

     При указании директивы компилятора  {$I-}  функция  IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     См. также: Append, Assign, Close, Rewrite.

     Пример:

     function FileExists(FileName: string) : boolean;
     { булевская функция, возвращающая значение Truе, если файл
       существует и значение False в противном случае }
     var
       f : file;
     begin
      {$I-}
      Assign(f, FileName);
      Reset(f);
      Close(f);
      {I+}
      FileExists := (IOResult = 0) and (FileName <> '');
     end; { FileExists };
      begin
       if FileExists(ParamStr(1)) then { получить из командной
                                         строки имя файла }
       Writeln('Файл существует');
       else
       Writeln('Файл не найден');
     end.

Процедура RestoreCrtMode                             модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  режим  экрана  в  исходное состояние
(то, какое существовало до инициализации графики).

     Целевая платформа: Реальный режим. Защищенный режим.

     Описание: procedure RestoreCrtMode;

     Примечания: Восстанавливает исходный видеорежим,  обнаружен-
ный  процедурой InitGraph.  Данная процедура может использоваться
вместе с процедурой SetGraphMode для переключения между текстовым
и графическим режимом.

     Ограничения: Должен использоваться графический режим.

     См. также:     CloaseGraph,     DetectGraph,      InitGraph,
SetGraphMode.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
          Halt(1);
       OutText('Для выхода из графики нажмите Enter:');
       Readln;
       RestoreCrtMode;
       Writeln('Теперь вы в текстовом режиме');
       Readln;
       SetGraphMode(GetGraphMode);
       OutTextXY(0, 0, 'Вы снова в графическом режиме');
     OutText(0, TextHeight('H'), 'Для выхода нажмите Enter');
     Readln;
     CloseGraph;
     end.

Процедура Rewrite                                   модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Создает и открывает новый файл.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure Rewrite(f [ : file; Size: Word ] );

     Примечания: Параметр f является файловой  переменной,  соот-
ветствующей  любому  типу файла.  Он должен быть связан с внешним
файлом с помощью процедуры Assign.  Параметр размера Size  предс-
тавляет  собой  необязательное  выражение  длиной в слово и может
указываться только в том случае, если f является нетипизированным
файлом.  Если этот параметр опущен, то подразумевается размер за-
писи в 128 байт.

     Процедура Rewrite создает новый внешний файл,  имя  которого
присвоено f. Если внешний файл с указанным именем уже существует,
то он удаляется, и на его месте создается новый пустой файл. Если
файл f уже открыт, то он сначала закрывается, а затем открывается
вновь.  Текущая позиция в файле устанавливается на начало  файла.
Если  f  было присвоено пустое имя (например,  Assign(f,'')),  то
после обращения к процедуре Reset(f) будет ссылкой на стандартный
файл ввода (стандартный описатель файла номер 1).

     Если f  - текстовый файл,  то он становится доступным только
по записи.  После обращения к процедуре Rewrite Eof(f)  принимает
значение Truе,  если файл пуст, и значение False в противном слу-
чае.

     Если f  является  нетипизированным файлом,  то параметр Size
определяет размер записи, который должен использоваться при пере-
даче  данных.  Если  этот параметр опущен,  то он подразумевается
равным по умолчанию 128 байтам.

     При указании  директивы  компилятора  {$I-} функция IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     См. также: FileMode, Truncate, Lst, Reset, Append, Assign.

     Пример:

     { в Windows используйте WinCrt }
     var f : text;
     begin
     Assign(f,'NEWFILE,$$$');
      Writeln(f,'Создается файл, в который записывается эта',
                 ' строка');
     Close(f);
     end.

Процедура RmDir                                     модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Удаляет пустой подкаталог.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure RmDir(s: String);

     Примечания: Параметр s является выражением  строкового типа.
Удаляется  подкаталог с путем доступа,  заданным строкой s.  Если
путь доступа не существует,  является непустым или если он задает
текущий каталог, то происходит ошибка ввода-вывода.

     При указании  директивы  компилятора  {$I-} функция IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Пустой подкаталог  удаляет также подпрограмма RemoveDir,  но
вместо строки Паскаля она воспринимает строку с  завершающим  ну-
лем.

     См. также: RemoveDir, MkDir, ChDir, GetDir.

     Пример:

     { в Windows используйте WinCrt }
     begin
       {$I-}
     { получить имя каталога из командной строки }
     RmDir(ParamStr(1));
     if IOResult <> 0 then
        Writeln('Каталог удалить нельзя');
     else
        Writeln('Каталог удален');
     end.


Функция Round                                       модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Округляет значение вещественного типа до  значе-
ния целого типа.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: function Round(x: Real): Longint;

     Примечания: Параметр  x представляет собой выражение вещест-
венного типа.  Функция Round возвращает значение длинного  целого
типа, которое является значением x, округленным до ближайшего це-
лого числа. Если значение x находится точно посередине между дву-
мя целыми числами,  то результатом будет число с большим абсолют-
ным значением.  Если  округленное  значение  x  не  соответствует
диапазону представления длинного целого типа,  то во время выпол-
нения происходит ошибка.

      См. также: Trunc, Int.

Процедура RunError                                  модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Останавливает  выполнение программы и генерирует
ошибку этапа выполнения.

     Целевая платформа:   Реальный   режим.   Защищенный   режим,
Windows.

     Описание: procedure RunError [ (ErrCode : Word ) ];

     Примечания: Процедура RunError аналогична процедуре Halt, но
в дополнение к остановке программы она генерирует на текущем опе-
раторе ошибку этапа выполнения. Параметр ErrCode представляет со-
бой номер ошибки этапа выполнения (0 опущен). Если текущий модуль
был  скомпилирован  с  установленным параметром Debug Information
(Отладочная информация), и вы запускаете программу из среды инте-
рактивной отладки IDE, то Borland Pascal обрабатывает обращение к
RunError, как обычную ошибку этапа выполнения.

     См. также: Halt.

     Пример:

     {$IFDEF Debug}
        if P = nil then RunError(204);
     {$EDNIF}

Процедура ScrollTo                                  модуль WinCrt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Прокручивает  окно  CRT для вывода ячейки вирту-
ального экрана с координатами левого верхнего угла (X,Y).

     Целевая платформа: Windows.

     Описание: procedure ScrollTo(X, Y: Integer);

     Примечания: Ячейка  с координатами (0,0) соответствует верх-
нему левому углу виртуального экрана.


Процедура Sector                                     модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Вычерчивает и заполняет эллиптический сектор.

     Целевая платформа: Реальный режим, защищенный режим.

     Целевая платформа: Windows.

     Описание: procedure Sector(X, Y: Integer; SStart, SEnd XRad,
YRad: Word);

     Примечания: Процедура использует (X,Y) как точку центра, па-
раметры XRad,  YRad определяют,  соответственно, горизонтальный и
вертикальный  радиусы.  Сектор  вычерчивается  от начального угла
SStart до конечного угла SEnd.  Сектор рисуется текущим цветом  и
закрашивается с использованием образца закраски и цвета, заданных
с помощью процедур SetFillStyle или SetFillPattern.

     Если задан  начальный  угол 0 и конечный угол 360,  то будет
нарисован и  закрашен  полный  эллипс.  Углы  для  процедур  Arc,
Ellipse,  FillEllipse,  PieSlice задаются против часовой стрелки,
при этом углу 0 соответствует 3 часа, 90 градусов - 12 часов и т.
д.

     Если при заполнении  сектора  происходит ошибка,  то функция
GraphResult возвращает значение grNoScanMem.

     Ограничения: Должен использоваться графический режим.

     См. также:  Arc, Circle, Ellipse, FillEllipse, GetArcCoords,
GetAspectRatio, PieSlice,      SetFillStyle,      SetFillPattern,
SetGraphBufSize.

     Пример:

     uses
       Graph;
     const
       R = 50;
     var
       Driver, Mode : integer;
       Xasp, Yasp : word;
     begin
       Driver := Detect;        { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
       Sector(GetMaxX div 2, GetMaxY div 2, 0, 45, R, R);
       GetAspectRatio(Xasp, Yasp); { нарисовать сектор круга }
       Sector(GetMAxX div 2, GetMaxY div 2,  { точка центра }
                 180, 135,       { зеркальное отображение выбран-
                                    ного ранее угла }
                 R, R * LongInt(Xasp) div Yasp);
       Readln;
       CloseGraph;
     end.

Процедура Seek                                      модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Перемещает текущую позицию в файле  к  заданному
элементу.

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: procedure Seek(f, n: Longint);

     Примечания: Параметр  f  является любой файловой переменной,
кроме текстовой,  а n представляет собой выражение  целого  типа.
Текущая  позиция  в  файле f перемещается к элементу с номером n.
Номер первого элемента файла равен 0.  Для того,  чтобы расширить
файл,  можно  выполнить  поиск элемента файла,  расположенного за
последним элементом. То есть оператор Sееk(f,FileSize(f)) переме-
щает текущую позицию в файле в конец файла.

     При указании  директивы  компилятора  {$I-} функция IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Процедуру  нельзя  использовать  для  текстовых
файлов. Файл должен быть открыт.

      См. также: FilePos.

Функция SeekEof                                     модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает для  файла  состояние  "конец  файла"
(end-of-file).

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: function SeekEof [ (var f: Text) ]: Boolean;

     Примечания: За исключением того, что функция SееkEof пропус-
кает все пробелы,  знаки табуляции и метки конца строки, она пол-
ностью соответствует функции Eof.  Ее  полезно  использовать  при
считывании числовых значений из текстового файла.

     При указании  директивы  компилятора  {$I-} функция IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Функцию можно использовать только для текстовых
файлов. Файл должен быть открыт.

      См. также: Eof, SeekEoln.

Функция SeekEoln                                    модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает для файла  состояние  "конец  строки"
(end-of-line).

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: function SeekEoln [ (var f : Text) ];

     Примечания: За  исключением того,  что функция SееkEоln про-
пускает все пробелы и знаки табуляции, она полностью соответству-
ет функции Eoln.  Ее полезно использовать при считывании из текс-
тового файла числовых значений.

     При указании директивы компилятора  {$I-}  функция  IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Функцию можно использовать только для текстовых
файлов. Файл должен быть открыт.

      См. также функции Eoln, SeekEof.

Функция Seg                                         модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает сегмент для указанного объекта.

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: function Seg(x): Word;

     Примечания: Параметр x представляет собой  любую  переменную
или идентификатор процедуры или функции. Результат длиной в слово
является адресом сегмента для x.

      См. также: Ofs, Addr.


Процедура SetActivePage                              модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает  для  графического вывода активную
страницу.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetActivePage(Page: Word);

     Примечания: Страница,  заданная параметром Page,  становится
активной.  Весь графический вывод будет теперь направляться в эту
страницу.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetActivePage(Page: Word);

     Примечания: Страница,  заданная параметром Page,  становится
активной.  Весь графический вывод будет теперь направляться в эту
страницу.

     Возможность использования нескольких  страниц поддерживается
только в графических адаптерах EGА (256K),  VGА и  Неrcules.  При
использовании  нескольких графических страниц программа может вы-
водить графическую информацию в страницу,  не выводимую в  данный
момент  на  экран,  а затем быстро вывести на экран этот двоичный
образ,  сменив  отображаемую   страницу   с   помощью   процедуры
SetVisualPage.  Этот  метод особенно полезен при программировании
мультипликации.

     Ограничения: Должен использоваться графический режим.

     См. также: SetVisualPage.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
          Halt(1);
      begin
       ClearDivice;
       SetVisualPage(0);
       SetActivePage(1);
       Rectangle(10,20,30,40);
       SetVisualPage(1);
      end;
      else
        OutText('Страничный режим не поддерживается');
        Readln;
        CloseGraph;
      end.

Процедура SetAllPalette                              модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Изменяет все цвета палитры на указанные.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetAllPalette(var Palette);

     Примечания: Параметр Palette является нетипизированным пара-
метром. Первое его слово представляет собой длину палитры. Следу-
ющие n байт заменяют текущие цвета  палитры.  Каждый  цвет  может
принимать значение от -1 до 15.  Значение -1 не изменяет предыду-
щее значение записи.

     Имейте в виду, что допустимые цвета зависят от текущего гра-
фического драйвера и текущего графического режима.

     При передаче  SetAllPalette  недопустимого ввода GraphResult
возвращает значение -11 (rgError), и изменений в значении палитры
не происходит.

     Изменения, вносимые в палитру,  немедленно  отображаются  на
экране.  При  любом  изменении цвета палитры все места на экране,
где этот цвет используется, будут изменены в соответствии с вновь
заданным значением.

     См. описание констант цветов для SetRGBPalette,  где вы най-
дете определение констант цветов и записи PaletteType.

     Ограничения: Должен использоваться графический режим.  Может
использоваться с EGA,  EGA64 или VGA (но не с IBM 8514 или VGA  с
256-цветным режимом).

     См. также:  GetBkColor,  GetColor,  GetPalette,  SetBkColor,
SetColor, SetPalette, SetRGBPalette.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       Palette : PaletteType;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
          Halt(1);
     begin
          Line(0, 0, GetMaxX, GetMaxY);
      with Palette do
      begin
        Size        := 4;
      Colors[0]     := LightCyan;       { светло-голубой }
      Colors[1]     := Red;             { красный }
      Colors[2]     := Yellow;          { желтый }
      Colors[3]     := White;           { белый }
      SetAllPalette(Palette);
       end;
      Readln;
      CloseGraph;
     end.

Процедура SetAspectRatio                             модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Изменяет принятое по умолчанию значение  коэффи-
циента относительного удлинения.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetAspectRatio(Xasp, Yasp: Word);

     Примечания: Процедура SetAspectRatio применяется для измене-
ния принятого по умолчанию для текущего графического режима коэф-
фициента относительного удлинения. Коэффициент относительного уд-
линения используется при вычерчивании  окружностей.  Если  окруж-
ность выглядит эллиптической,  значит монитор не настроен должным
образом. Его можно настроить с  помощью  аппaратных  средств  или
программным путем, изменив с помощью процедуры SetAspectRatio ко-
эффициент относительного удлинения.  Для получения текущего коэф-
фициента относительного  удлинения  можно  использовать процедуру
GetAspectRatio.

     Ограничения: Должен использоваться графический режим.

     См. также: GetAspectRatio.

     Пример:

     uses
       Crt, Graph;
     const
       R = 50;
     var
       Driver, Mode: integer;
       Xasp, Yasp: word;
     begin
       DirectVideo := false;
       Driver := Detect;    { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult <> 0 then
          Halt(1)
       GetAspectRatio(Xasp, Yasp); { получить   используемый   по
                                     умолчанию коэффициент  отно-
                                     сительного удлинения }
       { Настроить на VGA и 8514. При этом коэффициент
         относительного удлинения = 1.1 }
       if Xasp = Yasp then
          Xasp := 5 * Xasp;
       { Продолжить изменение значения коэффициента
         относительного удлинения до получения 1:1 или пока
         не будет нажата клавиша }
        while (Xasp < Yasp) and not KeyPressed do
        begin
          GetAspectRatio(Xasp, Yasp);
          Circle(GatMaxX div 2, GetMaxY div 2, R);
          Inc(Xasp, 20);
        end;
        SetTextJustify(CenterText, CenterText);
        OutTextXY(GetMaxX div 2, GetMaxY div 2, 'Выполнено!');
        Readln;
        CloseGraph;
      end.

Процедура SetBkColor                                 модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Используя  палитру устанавливает текущий фоновый
цвет.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetBkColor(Color: Word);

     Примечания: SetBkColor(0) задает использование первого цвета
палитры  в качестве текущего фонового цвета.  Фоновые цвета могут
принимать значения в диапазоне от 0 до 15, в зависимости от теку-
щего  графического  драйвера и текущего графического режима.  Для
адаптера CGA данная процедура задает цвет развертки.

     Например, в режиме CGAC1 палитра содержит четыре цвета: чер-
ный, красный, желтый и зеленый. SetBkColor(0) выбирает в качестве
фонового цвета черный, значение 1 задает красный цвет и т.д.

     Ограничения: Должен использоваться графический режим.

     См. также:  GetBkColor, GetColor, GetPalette, SetAllPalette,
SetColor, SetPalette.

     Пример:

     uses Crt, Graph;
     var
       GraphDriver, GraphMode : integer;
       Palette : PaletteType
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       Randomize;
       If GraphResult <> grOk then
          Halt(1);
       GetPalette(Palette);
       repeat
         SetBkColor(Random(Palette.Size));
         LineTo(Random(GetMatX),Random(GetMatY));
       until KeyPressed            { для выхода нажмите клавишу }
       CloseGraph;
      end.

Процедура SetCBreak                                    модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает  проверяемое операционной системой
DOS состояние Ctrl+Break.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetCBreak(Break: Boolean);

     Примечания: Данная процедура устанавливает  проверяемое  DOS
состояние Ctrl+Break.  Когда это состояние выключено (False), DOS
проверяет Ctrl+Break только во время выполнения  ввода-вывода  на
консоль,  устройство  печати  или порты.  Во включенном состоянии
(True) проверки выполняются при каждом системном выводе.

     См. также: GetCBreak.

Процедура SetColor                                   модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Используя палитру устанавливает текущий цвет ри-
сунка (Color).

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetColor(Color: Word);

     Примечания: SetColor(0) задает использование  первого  цвета
палитры  в  качестве текущего цвета рисунка.  Цвета рисунка могут
принимать значения в диапазоне о 0 до 15,  в зависимости  от  ис-
пользуемого графического драйвера и графического режима.

     Наибольший допустимый  цвет  для  текущего драйвера и режима
возвращает подпрограмма GetMaxColor.

     Ограничения: Должен использоваться графический режим.

     См. также:  DrawPoly, SetRGBPalette,  GetBkColor,  GetColor,
GetPalette, SetAllPalette, GetColor, SetPalette.

     Пример:

     uses Crt, Graph;
     var
       GraphDriver, GraphMode : integer;
       Palette : PaletteType
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       Randomize;
       If GraphResult <> grOk then
          Halt(1);
       GetPalette(Palette);
       repeat
         SetBkColor(Random(Palette.Size));
         LineTo(Random(GetMatX),Random(GetMatY));
       until KeyPressed;
      end.

Процедура SetCurDir                                 модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Изменяет  текущий  каталог на маршрут,  заданный
параметром Dir.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetCurDir(Dir: PChar);

     Примечания: Если Dir задает буквенную метку диска,  то теку-
щий диск также изменяется. Об ошибках сообщается в DosError.

     Те же  функции,  что  и  SetCurDir,  выполняет  подпрограмма
ChDir, но вместо строки  с  завершающим  нулем  она  воспринимает
строку Паскаля.

     См. также: GetCurDir, GreateDir, RemoveDir.

Процедура SetDate                                      модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает текущую дату в операционной систе-
ме.

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: procedure SetDate(var Y, M, D, Dw: Word);

     Примечания: Возвращаемые значения имеют следующие допустимые
диапазоны: Y  (год)  - 1980..2099,  M (месяц) - 1..12,  D (число)
1..31,  Dw (день недели) - 0..6  (где  значение  0  соответствует
воскресенью). Если дата указана неверно, то запрос игнорируется.

      См. также: GetDate, GetTime, SetTime.


Процедура SetFAttr                                     модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает атрибуты файла.

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: procedure SetAttr(var f; Attr: Word);

     Примечания: Параметр  f  должен  представлять собой файловую
переменную  (соответствующую  типизированному,  нетипизированному
или текстовому файлу) для которого должно быть выполнено присваи-
вание файловой переменой,  но который не должен быть открыт. Фор-
мирование  атрибутов выполняется путем добавления соответствующих
масок, заданных в виде констант в модуле Dos (см. константы атри-
бутов файла).

     Коды ошибок можно получить с помощью функции DosError.  Воз-
можными кодами ошибок являются код 3 (недопустимый маршрут) и код
5 (доступ к файлу запрещен).

     Ограничения: Файл не может быть открыт.

     См. также: GetFAttr, GetFTime, SetFTime.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Dos;
      var
        f : file;
     begin
       Assign(f,'C:\AUTOEXEC.BAT');
       SetFAttr(f, Hidden);          { или faHidden под Windows }
       Readln;
       SetFAttr(f, Archive);         { или faArchive под Windows }
     end.

Процедура SetFillPattern                             модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выбирает  заданный пользователем образец закрас-
ки.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetFillPattern(Pattern: FillPatternType;
Color: Word);

     Примечания: Устанавливает тип закраски и ее  цвет  для  всех
типов закраски, выполняемых процедурами FillPoly, Bar, FloodFill,
Bar3D и PieSlice, битовый образец закраски, задаваемый процедурой
Pattern, и цвет, задаваемый процедурой Color. Тип FillPatternType
определен в модуле Graph.

     Образец закраски  основывается на внутренних байтовых значе-
ниях,  содержащихся в массиве Pattern.  Этот массив имеет длину 8
байт, и  каждый  байт соответствует 8 элементам изображения в об-
разце закраски.  Если бит в байте образца закраски принимает зна-
чение 1, то элемент изображения будет построен. Следующий образец
закраски представляет собой, например, закраску в виде "шахматной
доски" (50% полутон):

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і         Двоичный вид        Шестнадцатиричный вид             і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і       10101010         =         $AA            (первый байт) і
і       01010101         =         $55            (второй байт) і
і       10101010         =         $AA            (третий байт) і
і       01010101         =         $55         (четвертый байт) і
і       10101010         =         $AA             (пятый байт) і
і       01010101         =         $55            (шестой байт) і
і       10101010         =         $AA           (седьмой байт) і
і       01010101         =         $55           (восьмой байт) і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Определенные пользователем типы закраски позволяют вам  соз-
давать типы закраски, отличающиеся от заранее определенных, кото-
рые могут выбираться с  помощью  процедуры  SetFillStyle.  Всякий
раз, когда вы выбираете новый образец закраски с помощью процедур
SetFillPattern или SetFillStyle все операции закраски  будут  вы-
полняться с использованием этого типа закраски. При обращении ви-
да SetFillStyle(UserField, SomeColor) всегда будет выбираться об-
разец,  заданный  пользователем.  Это  позволяет вам определять и
использовать с помощью  процедуры  SetFillPattern  новый  образец
закраски, а  затем  переходить  от встроенного образца закраски к
новому, заданному вами, обращаясь к процедуре YetTextStyle.

     Ограничения: Должен использоваться графический режим.

     См. также:    Bar,    Bar3D,    FillPoly,    GetFillPattern,
GetFillSettings GraphResult, константы grXXXX, PieSlice.

     Пример:

     uses Graph;
     const
       Gray50 : FillPatternType = ($AA, $55, $AA, $55, $AA, $55,
                                   $AA, $55);
        var
        Driver, Mode: integer;
      begin
        Driver := Detect;   { перевести в графический режим }
        InitGraph(Driver, Mode, '');
        if GraphResult <> 0 then
           Halt(1)
      SetFillPattern(Gray50, White);
      Bar(0, 0, 100, 100);  { нарисовать столбец, используя 50%
                              полутон }
      Readln;
      CloseGraph;
     end.


Процедура SetFillStyle                               модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает тип закраски и ее цвет.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure   SetFillStyle(Pattern:   Word;   Color:
Word);

     Примечания: Устанавливает  образец Pattern и цвет Color зак-
раски для всех видов закраски,  выполняемых процедурами FillPoly,
Bar,  Bar3D,  и PieSlice. Можно использовать множество типов зак-
раски.  По умолчанию выбирается сплошная закраска  белого  цвета.
См. определение констант образцов закраски.

     Если процедуре  SetFillStyle  передан недопустимый ввод,  то
GraphResult возвращает значение grError,  а текущая  закраска  не
изменяется. Если  Pattern  равно  UserFill,  то активным образцом
закраски становится образец,  определенный пользователем  (с  по-
мощью подпрограммы SetFillPattern).

     Ограничения: Должен использоваться графический режим.

     См. также:    Bar,    Bar3D,    FillPoly,   FillPatternType,
GetFillSettings, PieSlice, GetMaxColor, GraphResult.

     Пример:

     SetFillStyle(SolidFill,0);
     Bar(x1, y1, x2, y2);
     SetFillStyle(XHatchFill,0);
     Bar(x1, y1, x2, y2);


Процедура SetFTime                             модуль Dos, WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает дату и время последней записи фай-
ла.

     Целевая платформа:   Реальный   режим,   защищенный   режим,
Windows.

     Описание: procedure SetTime(var f; Time: Longint);

     Примечания: Параметр f должен быть файловой переменной,  со-
ответствующей  типизированному,  нетипизированному или текстовому
файлу. Параметр времени Time можно сформировать с помощью обраще-
ния к процедуре РасkТiме. Ошибки можно получить с помощью функции
DosError.  Единственно возможным кодом ошибки является код 6 (не-
допустимый файловый канал).

     Ограничения: Файл f должен быть открыт.

     См. также:   DosError,   GetFTime,   PackTime,   UnPackTime,
SetFAttr.


Процедура SetGraphMode                               модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Позволяет вам изменить размер буфера, используе-
мого для закраски.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetGraphBufSise(BufSize: Word);

     Примечания: Для внутреннего буфера  устанавливается  размер,
соответствующий параметру BufSize.  Этот буфер выделяется в дина-
мически распределяемой области памяти при обращении  к  процедуре
InitGraph.

     По умолчанию буфер имеет размер 4К. Этого достаточно для за-
полнения многоугольника штриховкой примерно из 650 линий. В неко-
торых  достаточно  редких  ситуациях может потребоваться изменить
размеры буфера, чтобы избежать его переполнения.

     Ограничения: Если обращение к процедуре InitGraph  уже было,
то вызов процедуры SetGraphBufSize игнорируется.

     См. также: FloodFill, FillPoly, InitGraph.

Процедура SetGraphMode                               модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает  для  системы  графический режим и
очищает экран.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetGraphMode(Mode: Integer);

     Примечания: Параметр Mode должен задавать для текущего драй-
вера  устройства  допустимый графический режим.  Данная процедура
используется для выбора графического режима,  отличного от  того,
который по умолчанию устанавливается процедурой InitGraph.

     Процедура SetGraphMode  может  также использоваться вместе с
процедурой RestoreCrtMode для переключения между текстовым и гра-
фическим режимами.

     Процедура SetGraphMode  сбрасывает все графические параметры
(текущий указатель, палитру, цвет, область просмотра и т.д.) в те
значения, которые назначаются для них по умолчанию.

     Если делается попытка выбрать для текущего драйвера устройс-
тва недопустимый режим,  то функция GraphResult возвращает значе-
ние -10 (grInvalidMode).

     См. описание констант драйвера  и  режима,  а  также  список
драйверов и режимов.

     Ограничения: Перед  обращением к данной процедуре необходимо
выполнить (с нормальным завершением) вызов процедуры InitGraph.

     См. также:     ClearDevice,     CloseGraph,     DetectGraph,
GetGraphMode,     InitGraph,     RestoreCrtMode,     GraphResult,
GetModeRange, константы драйвера и режима.

     Пример:

     uses Graph;
     var
       GraphDriver : integer;
       GraphMode   : integer;
       LowMode     : integer;
       HighMode    : integer;
     begin
     GraphDriver := Detect;
     InitGraph(GraphDriver, GraphMode, '');
     if GraphResult <> grOk then
        Halt(1);
     GetModeRange(GraphDriver, LowMode, HighMode);
     SetGraphMode(LowMode); { выбрать режим с низким
                              разрешением }
     Line(0, 0, GetMaxX, GetMaxY);
     Readln;
     CloseGraph;
     end.

Процедура SetIntVec                            модуль Dos, WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает по указанному адресу заданный век-
тор прерывания.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetIntVec(IntNum: Byte; Vec: Pointer);

     Примечания: Параметр  IntNum задает номер вектора прерывания
(0...255),  а параметр Vec задает его адрес. Чтобы получить адрес
процедуры обработки, прерываний параметр Vec часто задается с ис-
пользованием оператора @. Предположим, что Int1BSave является пе-
ременной  типа указатель и Int1BHandler - идентификатор процедуры
обработки прерываний. Тогда следующая последовательность операто-
ров задает новый обработчик прерывания $В1,  а затем восстанавли-
вает исходный обработчик прерывания:

     GetIntVec($1B,Int1BSave);
     SetIntVec($1b,@Int1BHandler);
           .
           .
           .
     SetIntVec($1B,Int1BSave);

     Ограничения: В защищенном режиме DOS,  а также в стандартном
и улучшенном режимах Windows SetIntVec устанавливает вектор  пре-
рывания защищенного режима с заданным номером вектора прерывания.
SetIntVec нельзя использовать для модификации векторов прерываний
реального режима или векторов исключительных ситуаций защищенного
режима.

     См. также: GetIntVec.


Процедура SetLineStyle                               модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает  текущую  толщину  S  и  тип линии
SType.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetLineStyle(SType: Word; Pattern: Word;
S: Word);

     Примечания: Данная процедура влияет на все типы  линий,  вы-
черчиваемые процедурами Line,  LineTo,  RecTangle, DrawPoly, Arc,
Circle и др.  Могут вычерчиваться непрерывные,  пунктирные линии,
линии, состоящие из  точек  или  точек  и  тире.  Если  процедуре
SetLineStyle передаются неверные параметры,  то GraphResult будет
возвращать значение grError и текущие установки останутся неизме-
ненными. См.  константы  типов  линий.  SType  -  это значение от
SolidLn  до  IserBitLn(0..4).  Если  SType  не  равно  UserBitLn,
Pattern игнорируется.  S  -  это NormWidth или ThickWidth.  Когда
SType равно UserBitLn,  линия выводится с помощью 16-битового об-
разца, определенного параметром Pattern. Например, если Pattern =
$AAAA, то 16-битовый образец выглядит следующим образом

     1010101010101010          { NormWidth }

     1010101010101010          { ThickWidth }
     1010101010101010
     1010101010101010

     Ограничения: Должен использоваться графический режим.

      См. также:    SetLineStyle,    Line,    LineRel,    LineTo,
SetWriteMode, GraphResult.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       x1, y1, x2, y2 : integer;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
          Halt(1);
           x1 := 10;
           y1 := 10;
           x2 := 200;
           y2 := 150;
         SetLineStyle(DottedLn,0,NormVidth);
         Rectangle(x1,y1,x2,y2);
         SetLineStyle(UserBitLn,$C3,ThickWidth);
         Rectangle(Pred(x1), Pred(y1), Succ(x2), Succ(y2));
        Readln;
        CloseGraph;
     end.



Процедура SetPalette                                 модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Изменяет один из цветов палитры в соответствии с
параметрами N (номер цвета) и Color (цвет).

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetPalette(N: Word; Color: Shortint);

     Примечания: Изменяет в палитре запись N на Color. SetPalette
(0,LightCyan)  устанавливает  в  качестве  первого  цвета палитры
светло-бирюзовый. В зависимости от текущего графического драйвера
и текущего  графического режима параметр N может принимать значе-
ния от 0 до  15.  При  передаче  SetPalette  недопустимого  ввода
GraphResult возвращает значение grError.

     Внесенные в палитру изменения немедленно отображаются на эк-
ране.  В  приведенном  далее примере на экране рисуется несколько
линий, затем  палитра  случайным образом изменяется.  Каждый раз,
когда изменяется цвет палитры, все места на экране, где использу-
ется данный цвет,  будут изменяться в соответствии с новым значе-
нием.

     Ограничения: Должен использоваться графический режим.  Может
применяться только с EGA, EGA 64 или EGA (но не с IBM 8514).

      См. также: GetBkColor, GetColor, SetAllPalette, SetBkColor,
SetColor, SetRGBPalette, GraphResult.

     Пример:

     uses Crt, Graph; var
      Graphriver, GraphMode : integer;
      Color : word;
      Palette : PaletteType;
     begin
      GraphDriver := Detect;
      InitGraph(GraphDriver, GraphMode,'');
      if GraphResult <> grOk then
         Halt(1);
      SetPalette(Palette);
      for Color := 0 to Pred(Palette.Size) do
      begin
        SetColor(Color);
        Line(Color, Color, Color*5, Color*5);
      end;
      Randomize;
      repeat;
        SetPalette(Random(Palette.Size),
                   Random(Palette.Size));
      until KeyPressed;
     end;
     else
     Line(0, 0, 100, 0);
        Readln;
        CloseGraph;
     end.



Функция SetPrnFont                                  модуль WinPrn
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Начинает печать, используя выбранный шрифт.

     Целевая платформа: Windows.

     Описание: function SetPrnFont(var  F:  Text;  Font:  HFont):
HFont;

     Примечания: Функция  SetPrnFont  вызывает печать файла с ис-
пользованием данного шрифта.  Возвращается описатель шрифта,  ис-
пользуемого  в данный момент принтером.  Если возвращаемый описа-
тель не предполагается использовать далее  в  программе,  то  его
можно уничтожить,  вызвав  подпрограмму  DeleteObject.  Описатель
шрифта можно создать с помощью функций API Windows CreateFont или
CreateFontIndirect.

     Пример:

     program Test;
     uses WinTypes, WinProcs, WinCrt, WinPrn;
        Prn: Text;
        OldFont: HFont;
     begin
        Writeln(' Печать... ');
        AssingDefPrn(Prn);
        Rewrite(Prn);
        Writeln(Prn, 'Некоторый текст');
        OldFont := SetPrnFont(Prn, CreateFont(100, 0, 0, 0, 0, 0,
         0, 1, Old_Default_Precis, Clip_Default_Precis,
         Default_Quality, ff_Roman, nil);
        Writeln(Prn, 'Некоторый текст новым шрифтом');
        DeleteObject(SetPrnFont(Prn, OldFont));
        Writeln(Prn, 'Снова старый шрифт');
        Close(Prn);
        Writeln('Выполнено');
     end.

     См. также: AbortPrn, AssingDefPrn, AssingPrn, TitlePrn.

Процедура SetRGBPalette                              модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Позволяет изменить записи палитры  для драйверов
IBM 8514 и VGA.

     Целевая платформа: Реальный режим, защищенный режим.

     Описание: procedure SetRGBPalette(N,  RedVavue,  GreenValue,
BlueValue: Integer);

     Примечания: Параметр N задает запись палитры,  которую нужно
загрузить, а RedValue, GreenValue и BlueValue - цвета, составляю-
щие запись палитры.

     Для дисплея  IBM 8514  N  принимает  значения  в   диапазоне
0..255. Для VGA в цветном режиме и 256К N (номер цвета) принимает
значения в диапазоне  0..15.  Используется  только  младший  байт
RedValue, GreenValue  и  BlueValue  и  только 6 старших бит этого
байта загружаются в палитру.

     Замечание: В  целях  совместимости  с  другими  графическими
адаптерами фирмы IBM драйвер BGI определяет первые 16 записей па-
литры IBM 8514 для адаптеров EGA/VGA.  Эти значения могут исполь-
зоваться  непосредственно  или  изменяться  с  помощью  процедуры
SetRGBPalette.

     Ограничения: Процедура  SetGRBPalette  может  использоваться
только при наличии графического адаптера VGA и драйвера IBM 8514.

      См. также:  SetBkColopr, GetColor, GetPalette, GraphResult,
SetAllPalette, SetBkColor, SetColor, SetPalette.

     Пример:

     uses Graph;
     type
       GRBRec = record
       RedVal, GreenVal, BlueVal : integer;
         end;
     const
       EGAColors : array[0..MaxColors] of
    GRBRec =(                              { Назв. Цвет }
        (RedVal:$00;GreenVal:$00;BlueVal:$00), {черный EGA 0}
        (RedVal:$00;GreenVal:$00;BlueVal:$FC), {голуб. EGA 1}
        (RedVal:$24;GreenVal:$FC;BlueVal:$24), {зелен. EGA 2}
        (RedVal:$00;GreenVal:$FC;BlueVal:$FC), {бирюз. EGA 3}
        (RedVal:$FC;GreenVal:$14;BlueVal:$14), {красн. EGA 4}
        (RedVal:$B0;GreenVal:$00;BlueVal:$FC), {малин. EGA 5}
        (RedVal:$70;GreenVal:$48;BlueVal:$FC), {корич. EGA 20}
        (RedVal:$C4;GreenVal:$C4;BlueVal:$C4), {белый  EGA 7 }
        (RedVal:$34;GreenVal:$34;BlueVal:$34), {серый  EGA 56}
        (RedVal:$00;GreenVal:$00;BlueVal:$70), {св.гол.EGA 57}
        (RedVal:$00;GreenVal:$70;BlueVal:$00), {св.зел.EGA 58}
        (RedVal:$00;GreenVal:$70;BlueVal:$70), {св.бир.EGA 59}
        (RedVal:$70;GreenVal:$00;BlueVal:$00), {св.кр. EGA 60}
        (RedVal:$70;GreenVal:$00;BlueVal:$70), {св.мал.EGA 61}
        (RedVal:$FC;GreenVal:$FC;BlueVal:$24), {желтый EGA 62}
        (RedVal:$FC;GreenVal:$FC;BlueVal:$FC), {я.белыйEGA 63}
        );
        var
          Driver, Mode,
          i : integer;
        begin
          Driver := IBM8514;      { отменить автообнаружение }
          Mode := IBM8514Hi;
          InitGraph(Driver, Mode, ''); { перевести в
                                         графический режим }
          if GraphResult < 0 then
             Halt(1);
          { нулевая палитра, весь графический вывод невидим }
          for i := 0 to MaxColors do
              with EGAColors[i] do
                 SetRGBPalette(i, 0, 0, 0);
          { вывести что-нибудь на экран }
          { изменить первый 16 записей палитры для 8514 }
          for i := 1 to MaxColors do
            begin
              SetColor(i);
              OutText(10, i*10, '...Нажмите любую клавишу..');
            end;
          { восстановить принятые по умолчанию цвета EGA в
            палитру 8514 }
          for i := 0 to MaxColors do
             with EGAColors[i] do
                  SetRGBPalette(i, RedVal, GreenVal, BlueVal);
          Readln;
          CloseGraph;
        end.

Функция SetSelectorBase                             модуль WinAPI
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает базовый адрес селектора.

     Целевая платформа: Защищенный режим, Windows.

     Описание: function   SetSelectorBase(Selector:  Word;  Base:
Longint): Word;

     Примечания: Устанавливает базовый адрес селектора,  заданный
параметром Selector,  для линейного адреса,  заданного параметром
Base. При успешном выполнении функции возвращаемое значение равно
Selector, в противном случае - нулю.

     См. также:         GetSelectorBase,        GetSelectorLimit,
SetSelectorLimit.

Функция SetSelectorLimit                            модуль WinAPI
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает предельное значение селектора.

     Целевая платформа: Защищенный режим, Windows.

     Описание: function  SetSelectorLimit(Selector:  Word;  Base:
Longint): Word;

     Примечания: Устанавливает предельное значение селектора, за-
данного параметром  Selector,  в  значение,  заданное  параметром
Limit. В стандартном режиме Windows и в защищенном режиме DOS за-
даваемое Limit значение не должно превышать $10000 (64K). Возвра-
щаемое значение всегда равно 0.

     См. также:         GetSelectorBase,        GetSelectorLimit,
SetSelectorBase.


Процедура SetTextBuf                                модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Назначает для текстового файла буфер ввода-выво-
да.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: procedure SetTextBuf(var f:  Text;  var  Buf  [  ;
Size: Word]);

     Примечания: Параметр f представляет собой файловую  перемен-
ную, соответствующую текстовому файлу. Параметр Buf (буфер) - лю-
бая переменная, а параметр Size (размер) - необязательное выраже-
ние длиной в слово.

     Каждая файловая  переменная для текстового файла имеет внут-
ренний буфер размером в 128 байт,  который по умолчанию использу-
ется для буферизации операций чтения и записи.  Этот буфер подхо-
дит для использования во многих прикладных задачах,  однако прог-
раммы,  выполняющие значительное количество операций ввода-вывода
(например,  задачи, осуществляющие копирование или преобразование
текстовых файлов) будут лучше работать с буфером большего  разме-
ра,  поскольку  это  уменьшает перемещение головки по поверхности
диска и избыточное использование файловой системы.

     Процедура SetTextBuf  переназначает буфер,  используемый для
текстового файла f: вместо внутреннего буфера файла f использует-
ся буфер,  заданный  параметром Buf.  Параметр Size задает размер
буфера в байтах.  Если этот параметр опущен,  то  подразумевается
использование SizeOf(Buf), то есть по умолчанию в качестве буфера
используется вся область памяти,  занятая  буфером.  Новый  буфер
действует  до тех пор,  пока для f вновь не выполняется процедура
Assign.

     Ограничения: Данная процедура никогда не  должна применяться
для  открытого файла,  хотя вызывать ее можно немедленно вслед за
обращением к процедурам Reset,  Rewrite и Appеnd. Вызов процедуры
SetTextBuf для открытого файла во время выполнения операций  вво-
да-вывода может из-за смены буфера привести к потере данных.

     Borland Pascal  не  обеспечивает существования буфера на все
время выполнения операций ввода-вывода для файла.  Общей ошибкой,
в частности,  является введение в качестве буфера локальной пере-
менной и затем использование файла вне процедуры,  в которой опи-
сывается буфер.

     Пример:

     { в Windows используйте модуль WinCrt }
     var
        f : text;
       ch : char;
     buf : char;                   { буфер 10 К }
     begin
         { назначить для файла считывание из командной строки }
     Assign(f, ParamStr(1));
         { ввести для более быстрого чтения буфер большего
           размера }
     SetTextBuffer(f, buf);
     Reset(f);
         { вывести текстовый файл на экран }
     while not Eof(f) do
     begin
       Read(f, ch);
       Write(ch);
     end;
     end.



Процедура SetTextJustify                             модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает значения выравнивания текста,  ко-
торые используются процедурами OutText и OutTextXY.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure SetTextJustify(Goriz, Vert: Word);

     Примечания: После  процедуры SetTextJustify вывод текста бу-
дет выравниваться по текущему указателю  заданным  способом.  При
использовании двух следующих операторов:

     SetTextJustify(CenterText, CenterText);
     OutTextXY(100, 100, 'ABC');

в середине точки с координатами (100,100) появится буква B. Уста-
новленные  по умолчанию параметры выравнивания можно восстановить
с помощью вызова SetTextJustify(LeftText,TopText). Если процедуре
SetTextJustify   передаются   недопустимые   параметры,   функция
GraphResult будет возвращать значение -11  (grError),  а  текущие
параметры выравнивания текста останутся неизмененными. См. описа-
ние констант выравнивания.

     Ограничения: Должен использоваться графический режим.

      См. также:   SetLineStyle,   OutTextXY,    GetTextSettings,
OutText, TextHeight, TextWidth, SetUserCharSize, GraphResult.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
     { выравнивание текста относительно центра экрана }
     SetTextJustify(CenterText, CenterText);
     OutTextXY(Succ(GetMaxX) div 2,
               Succ(GetMaxY) div 2,
               'Легко центрируется');
       ReadLn;
       CloseGraph;
     end.

Процедура SetTextJustify                             модуль Graph
     Назначение: Устанавливает значения выравнивания текста,  ко-
торые используются процедурами OutText и OutTextXY.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure SetTextJustify(Goriz, Vert: Word);

     Примечания: После  процедуры SetTextJustify вывод текста бу-
дет выравниваться по текущему указателю  заданным  способом.  При
использовании двух следующих операторов:

     SetTextJustify(CenterText, CenterText);
     OutTextXY(100, 100, 'ABC');

в середине точки с координатами (100,100) появится буква B. Уста-
новленные  по умолчанию параметры выравнивания можно восстановить
с помощью вызова SetTextJustify(LeftText,TopText). Если процедуре
SetTextJustify   передаются   недопустимые   параметры,   функция
GraphResult будет возвращать значение -11  (grError),  а  текущие
параметры выравнивания текста останутся неизмененными. См. описа-
ние констант выравнивания.

     Ограничения: Должен использоваться графический режим.

      См. также:   SetLineStyle,   OutTextXY,    GetTextSettings,
OutText, TextHeight, TextWidth, SetUserCharSize, GraphResult.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
     { выравнивание текста относительно центра экрана }
     SetTextJustify(CenterText, CenterText);
     OutTextXY(Succ(GetMaxX) div 2,
               Succ(GetMaxY) div 2,
               'Легко центрируется');
       ReadLn;
       CloseGraph;
     end.



Процедура SetTextStyle                               модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает текущий шрифт Font,  тип S и коэф-
фициент размера символа Size.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure SetTextStyle(Font:  word; S: word; Size:
CharSizeType);

     Примечания: Процедура влияет на весь текстовый вывод, выпол-
няемый  процедурами OutText и OutTextXY.  Можно использовать один
шрифт с двоичным образом 8х8 и несколько векторных шрифтов.  Под-
держивается нормальное (слева направо) расположение шрифта и вер-
тикальное (развернутое на 90  градусов  относительно  нормального
расположения),  при котором текст начинается с нижней границы эк-
рана и продолжается вверх.  Размер каждого символа может увеличи-
ваться на коэффициент,  задаваемый параметром Size. Значение раз-
мера символа,  равное единице, приводит к выводу двоичного образа
шрифта 8х8 в прямоугольную область экрана, содержащую 8х8 элемен-
тов изображения, параметр Size, равный 2 приведет к выводу на эк-
ран двоичного образа шрифта 8х8 в прямоугольную область элементов
изображения размером 16х16 и т. д. (вплоть до десятикратного уве-
личения нормального размера). Для определения действительных раз-
меров шрифта всегда используйте процедуры TextHeight и TextWidth.

     Нормальными значениями размера для  шрифта  являются  1  для
принятого по умолчанию шрифта и 4 для векторного шрифта. Эти зна-
чения  можно  передавать процедуре SetTextStyle в параметра Size.
Для настройки размера векторного текстового шрифта можно  исполь-
зовать процедуру SetUserFont.

     Обычно векторные   шрифты   при   обращении   к    процедуре
SetTextStyle шрифты загружаются с диска в динамически распределя-
емую область памяти.  Однако, вы сами можете загрузить шрифты или
скомпоновать их непосредственно с вашим файлом .EXE.  В этом слу-
чае для регистрации шрифта модулем  Graph  используйте  процедуру
RegisterBGIfont.

     Когда векторные  шрифты  хранятся  на диске,  при попытке их
загрузки могут происходить ошибки.  При  наличии  ошибок  функция
GraphResult возвращает одно  из  следующих  значений:  grFontMem,
grNoFontMem, grError,      rgIOError,      rgInvalidFont      или
grInvalidFontNum.

     Ограничения: Должен использоваться графический режим.

      См. также:  SetTextJustify,  TextHeight,   SetTextSettings,
TextWidth,    GetTextSettings,    RegisterBGIfont,   GraphResult,
SetUserCharSize.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
       Y, Size : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
     Y := 0;
     for Size := 1 to 4 do
     begin
       SetTextStyle(DefaultFont, HorizDir, Size);
       OutText(1,y,'Размер = '+Chr(Size+48));
       Inc(Y, TextHeight('H') + 1);
     end;
     Readln;
     CloseGraph;
     end.



Процедура SetTime                                      модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает  в  операционной  системе  текущее
время.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure SetTime(var Hour, Min, Sec, Ssec: Word);

     Примечания: Возвращаемые параметры принимают следующие  зна-
чения:  Hour (час) - от 0 до 23,  Min (минута) - от 0 до 59,  Sec
(секунда) - от 0 до 59 и Ssec (сотая доля секунды) - от 0  до 99.

      См. также: GetTime, GetDate, PackTime, SetDate, UnpackTime.

Процедура SetUserCharSize                            модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Позволяет пользователю изменять высоту  и ширину
символа для векторных шрифтов.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure  SetUserCharSize(MultX,   DivX,   MultY,
DivY: Word);

     Примечания: Параметр  MultX:DivX  представляет собой отноше-
ние,  умноженное  для  активного  шрифта   на   обычную   ширину.
MultY:DivY - это отношение,  умноженное для активного  шрифта  на
нормальную высоту.  Например, чтобы сделать шрифт вдвое выше, ис-
пользуйте для MultX значение 2,  а DivX задайте равным 1 (2 div 1
= 2).

     После вызова процедуры SetUserCharSize для того, чтобы шрифт
получил  новый  размер,  вам  не  нужно  сразу вызывать процедуру
SetTextStyle. При обращении к процедуре SetUserCharSize для теку-
щего символа устанавливается заданный размер.

     Ограничения: Должен использоваться графический режим.

     Пример: В данном примере показано, как можно изменить высоту
и ширину шрифта.

     uses Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
      SetTextStyle(TriplexFont, HorizDir, 4);
      OutText(Нормальный размер');
      SetUserCharSize(1, 3, 1, 1);
      OutText(Уменьшенный по высоте размер');
      SetUserCharSize(3, 1, 1, 1);
      OutText(Широкий шрифт');
       Readln;
       CloseGraph;
      end.


Процедура SetVerify                                    модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает в DOS состояние флага проверки.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: procedure SetVerify(Verify: Boolean);

     Примечания: Процедура SetVerify устанавливает в операционной
системе  DOS  состояние  флага  проверки.  В сброшенном состоянии
(False) проверка операций записи на диск не выполняется.  В уста-
новленном состоянии флага (True) при операциях записи на диск вы-
полняется поверки правильности выполнения операции.

      См. также: GetVerify.




Процедура SetViewPort                                модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Устанавливает для  графического  вывода  текущую
область просмотра или окно.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: SetViewPort(х1, у1, х2, у2: Word; Clip: Boolean);

     Примечания: Точка  (x1,y1) задает верхний левый угол области
просмотра,  а точка с координатами (x2,y2) определяет нижний пра-
вый угол (0 <= y1 < x2 и 0 <= y1 < y2). Левый верхний угол экрана
задается координатами (0,0).

     Булевская переменная  Cliр  определяет, будет ли изображение
отсекаться  текущими  границами  области   просмотра.   Процедура
SetVievPort(0,0,GetMaxX,GetMaxY,True)  всегда  задает  в качестве
области просмотра все поле графического экрана. Определены следу-
ющие константы:

     const
     ClipOn := true;
     ClipOff := false;

     Все графические команды (например, GetX, ОutТехt, Rectangle,
МоvеТо и т.  д.) зависят от текущей области просмотра. В качестве
примера  заметим,  что процедура МоvеТо перемещает текущий указа-
тель в точку (5,5) внутри области просмотра (абсолютными  коорди-
натами данной точки были бы координаты (15,25)).

       (0,0)                           (GetMaxX,0)
       ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
       і                                   і
       і           ЪДДДДДДДї               і
       і           і       і               і
       і           і   .   і               і
       і           і       і               і
       і           АДДДДДДДЩ               і
       і                                   і
       АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
       (0,GetMaxY)                   (GetMaxX,GetMaxY)

     Если булевская  переменная Cliр установлена в значение Truе,
то,  когда выполняется обращение к процедуре SetViewPort, все ри-
сунки будут обрезаться на границах текущей области просмотра. За-
метим, что  текущий указатель никогда не отсекается.  В следующем
примере прямая линия не будет нарисована полностью, поскольку она
будет обрезана на границе области просмотра:

     SetWiewPort(10, 10, 20, 20, ClipOn);
     Line(0, 5, 15, 5);

     Если бы  не выполнялось отсечение,  то прямая должна была бы
начинаться в точке с абсолютными координатами (10,15) и  заканчи-
ваться в точке с абсолютными координатами (25,15).  Но, поскольку
выполнялось отсечение,  то в действительности прямая будет вычер-
чиваться,  начиная с точки с абсолютными координатами (10,15),  и
заканчиваться в точке (20,15).

     Процедуры InitGraph,  ClearDevice и SetGraphMode  сбрасывают
определение  текущей области просмотра и устанавливают в качестве
области просмотра весь экран.  Текущее определение области  прос-
мотра можно получить с помощью процедуры GetViewSettings, которая
воспринимает параметры следующего глобального типа:

     type
       ViewPortType = record
                        x1, y1, x2, y2 : word;
                        Clip           : boolean;
                      end;

     Процедура SetViewPort перемещает текущий указатель в точку с
координатами (0,0).

     Ограничения: Должен использоваться графический режим.

     См. также: ClearViewPort, GetViewSettings, GraphResult.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
       if (gd = HercMono)
           or (gd = EGA or (Gd = EGA64) or (Gd = VGA)
     then
      begin
      SetVisualPage(0);
      SetActivePage(1);
      Rectangle(10, 20, 30, 40);
      SetVisualPage(1);
      end;
      else
       OutText('Страничный режим не поддерживается');
      Readln;
      CloseGraph;
      end.

Процедура SetVisualPage                              модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Задает номер отображаемой графической страницы.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure SetVisualPage(Page: Word);

     Примечания: Страница,  определяемая параметром Page,  стано-
вится отображаемой графической страницей.

     Несколько графических  страниц  поддерживается только графи-
ческими адаптерами EGA (256K),  VGA и Неrcules. При использовании
нескольких графических страниц программа может выводить графичес-
кую информацию в страницу, не выводимую в данный момент на экран,
а затем быстро вывести на экран этот двоичный образ, сменив отоб-
ражаемую страницу с помощью процедуры SetVisualPage.  Этот  метод
особенно полезен в мультипликации.

     Ограничения: Должен использоваться графический режим.

     См. также: SetActivePage.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
       if (gd = HercMono)
           or (gd = EGA or (Gd = EGA64) or (Gd = VGA)
       then
        begin
        SetVisualPage(0);
        SetActivePAge(1);
        Rectangle(10, 20, 30, 40);
        SetVisualPage(1);
        end;
        else
         OutText('Страничный режим не поддерживается');
        Readln;
        CloseGraph;
     end.

Процедура SetWriteMode                               модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Для константы CopyPut используется  инструкция Ассемблера MOV.При
этом вычерчиваемая линия "затирает" то,  что было на экране.  Для
константы XORPut для комбинирования линии с изображением на экра-
не используется инструкция XOR. Две последовательные операции XOR
приведут к стиранию линии и восстановлению исходного  изображения
на экране.

     Процедура SetWriteMode  влияет только на обращение к следую-
щим процедурам: DrawPoly, Line, LineRel, LineTo и Rectangle.

      См. также:  PutImage,  SetLineStyle операции BitBlt,  Line,
LineTo.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
            i : integer;
       x1, y1, dx, dy : integer;
       FillInfo : FillSettingsType;
     begin
       DirectVideo := false; { "выключить" запись на экран }
       Randomize;
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
      { заполнить экран используемым по умолчанию
        образцом }
      GetFillSettings(FillInfo); { получить текущие параметры }
      SetFillStyle(WideDotFill, FillInfo.Color);
      Bar(0, 0, GetMaxX, GetMaxY);
      dx := GetMAxX div 4; { задать размер прямоугольника }
      dy := GetMaxY div 4;
      SetLineStyle(SolidLn, 0, ThickWidth);
      SetWriteMode(XORPut);  { режим XOR для прямоугольника }
      repeat
        x1 := Random(GetMaxX - dx);
        y1 := Random(GetMaxY - dy); { нарисовать его }
        Delay(0);   { короткая пауза }
        Rectangle(x1, y1, x1 + dx, y1 + dy) { стереть его }
      until KeyPressed;
      Readln;
      CloseGraph;
     end.

Функция Sin                                         модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает синус аргумента.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Sin(x: Real): Real;

     Примечания: Параметр x является выражением вещественного ти-
па.  Результатом будет синус x.  Предполагается, что это значение
задает угол в радианах.

     Пример:

     var
       r : real;
     begin
       r := Sin(Y);
     end.

Функция SizeOf                                      модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает число байт, занимаемых аргументом.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.
     Описание: function SizeOf(x): Word;

     Примечания: Параметр x является ссылкой  на  переменную  или
идентификатором типа.  Данная функция возвращает число байт памя-
ти, занимаемых x.

     При передаче значений функциям FillChar, Моvе, GetМем всегда
следует использовать функцию SizeOf:

     FillChar(s, SizeOf(s), 0);
     GetMem(p, SizeOf(RecordType));

     Пример:

     type
       CustRec = record
                   Name  : string[30];
                   Phone : string[14];
                 end;
     var
         p : ^CustRec;
     begin
       GetMem(p, SizeOf(CustRec));
     end.

Процедура SizeofResource                            модуль WinAPI
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает размер ресурса.

     Целевая платформа: Защищенный режим, Windows.

     Описание: function     SizeofResource(Instance,     ResInfo:
THandle): Word;

     Примечания: SizeofResource возвращает размер ресурса, задан-
ный параметрами Instance и ResInfo.  Параметр Instance - это  эк-
земпляр модуля,  получаемый обычно из переменной HInstance модуля
System или создаваемой LoadLibrary.  Параметр ResInfo должен быть
информацией о ресурсе, созданной подпрограммой FindResource. Если
ресурс не найден, возвращаемое значение равно 0.

     Ограничения: Из-за выравнивания в выполняемом файле  возвра-
щаемый размер  может превышать фактический размер ресурса.  Прик-
ладная программа не должна рассчитывать,  что SizeofResource дает
точный размер ресурса.

     См. также: AccessResource, FindResource.

Процедура Sound                                        модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Включает внутренний динамик.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Sound(Herz: Word);

     Примечания: Параметр  Herz задает частоту генерируемого сиг-
нала в герцах.  Звуковой сигнал будет звучать до тех пор, пока он
не будет явным образом выключен обращением к процедуре NoSound.

     См. также: NoSound.

     Пример:

     uses Crt;
     begin
       Sound(220);                           { сигнал }
       Delay(200);                           { пауза }
       NoSound;                              { выключить }
     end;

Функция SPtr                                        модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает текущее значение регистра SP.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function SPtr: Word;

     Примечания: Результат длиной в слово представляет собой сме-
щение указателя стека внутри сегмента стека.

     См. также: Sseg.

Функция Sqr                                         модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает квадрат аргумента.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Sqr(x);

     Примечания: Параметр x - это выражение целого или веществен-
ного типа.  Результат,  имеющий тот же тип, что и x, представляет
собой квадрат x, то есть x*x.

Функция Sqrt                                        модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает квадратный корень аргумента.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Sqrt(x: Real): Real;

     Примечания: Параметр x представляет собой выражение  вещест-
венного типа. Результатом является квадратный корень x.

Функция SSeg                                        модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает текущее значение регистра SS.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function SSeg: Word;

     Примечания: Результат типа  Word  представляет  собой  адрес
сегмента стека.

      См. также: Sptr, Cseg, Dseg.

Процедура Str                                       модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует численное значение в  его  строковое
представление.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: procedure Str(х  [:  Size  [:  Dec  ]  ],  var  S:
String);

     Примечания: Параметр  x  является  выражением целого или ве-
щественного типа. Параметры Size и Dec представляют собой выраже-
ния целого типа.  Параметр s - строковая переменная. Данная функ-
ция преобразует x в его строковое представление в  соответствии в
параметрами форматирования  Size  (размер) и Dec.  За исключением
того, что  результирующая строка сохраняется в параметре s,  а не
записывается в текстовый файл, результат выполнения процедуры бу-
дет  в  точности тот же самый,  что и при обращении к стандартной
процедуре Write.

     См. также: Val, Write.

     Пример:

     { в Windows используйте WinCrt }
     function IntToStr(i : longint) : string;
     { преобразует любое значение целого типа в строку }
     var
       s : string[1];
     begin
       Str(i,s);
       IntToStr := s;
     end;
     begin
       Writeln(IntToSt(-5322));
     end.

Функция StrCat                                     модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Присоединяет копию одной строки к концу другой и
возвращает результат такой конкатенации.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrCat(Dest, Source: PChar): PChar;

     Примечания: StrCat  добавляет  к  Dest копию строки Source и
возвращает Dest.  Эта функция не  выполняет  проверки  длины.  Вы
должны обеспечить, чтобы в буфере, заданном параметром Dest, было
достаточно места для StrLen(Dest) + StrLen(Source)  +  1  символ.
Если вы  хотите  выполнять  проверку  длины,  используйте функцию
StrCat.

     См. также: StrCat.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     const
        Borland: PChar = 'Borland';
        Pascal:  PChar = 'Pascal';
     var
        S: array[0..15] of Char;
     begin
        StrCopy(S, Borland);
        StrCatS, ' ');
        StrCat(S, PAscal);
        Writeln(S);
     end.

Функция StrComp                                    модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Сравнивает две строки.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrCat(Str1, Str2: PChar): Integer;

     Примечания: Функция StrComp сравнивает строку Str1  с  Str2.
Возвращаемое значение меньше 0,  если Str1 < Str2,  равно 0, если
Str1 = Str2 или больше 0, если Str1 > Str2.

     См. также: StrIComp, StrLComp, StrLIComp.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     var
       C: Integer;
       Result: PChar;
       S1, S2: array[0..79] of Char;
     begin
       Readln(S1);
       Readln(S2);
       C := StrComp(S1, S2);
       if C < 0 then Result := ' меньше чем ' else
           if C > 0 then Result := ' больше чем ' else
               Result := ' равно ';
     Writeln(S1, Result, S2);
     end.

Функция StrCopy                                    модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Копирует одну строку в другую.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrCopy(Dest, Source: PChar): PChar;

     Примечания: Функция StrCopy копирует строку Source в Dest  и
возвращает результат в Dest. StrCopy не выполняет проверки длины.
Вы должны обеспечить,  чтобы в буфере,  заданном параметром Dest,
было достаточно места для StrLen(Source) + 1 символа. Если вы хо-
тите выполнять проверку длины, используйте функцию StrLCopy.

     См. также: StrECopy, StrLCopy.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     var
       S: array[0..15] of Char;
     begin
       StrCopy(S, 'Borland Pascal');
       Writeln(S);
     end.

Функция StrDispose                                 модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Уничтожает строку в  динамически  распределяемой
области памяти.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrDispose(Str: PChar);

     Примечания: Функция StrDispose уничтожает строку,  распреде-
ленную ранее  с  помощью функции StrNew.  Если Str имеет значение
nil, то функция StrDispose не делает ничего.

     См. также: StrNew.

Функция StrECopy                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Копирует одну строку в другую,  возвращая указа-
тель на конец строки-результата.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrECopy(Dest, Source: PChar): PChar;

     Примечания: Функция StrECopy копирует строку Source в Dest и
возвращает StrEnd(Dest).  Вы должны обеспечить,  чтобы в  буфере,
заданном    параметром    Dest,   было   достаточно   места   для
StrLen(Source) +  1 символа.  Для конкатенации последовательности
строк можно использовать вложенные вызовы StrECopy (см. пример).

     См. также: StrCopy, StrEnd.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     const
        Borland: PChar = 'Borland';
        Pascal:  PChar = 'Pascal';
     var
        S: array[0..15] of Char;
     begin
        StrECopy(StrECopy(StrECopy(S, Borland), ' '), Pascal);
        Writeln(S);
     end.


Функция StrEnd                                     модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает указатель на конец строки.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrEnd(Str: PChar): PChar;

     Примечания: Функция  StrEnd  возвращает указатель на нулевой
символ, завершающий строку Str.

     См. также: StrLen.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     const
        S: array[0..79] of Char;
     var
        Readln(s);
        Writeln('Длина строки равна ', StrEnd(S) - S);
     end.

Функция StrIComp                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Сравнивает две строки,  не различая регистр сим-
волов.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrIComp(Str1, Str2: PChar): Integer;

     Примечания: Функция StrIComp сравнивает строку Str1 со стро-
кой Str2,  не  учитывая  регистр символов.  Возвращаемое значение
меньше 0,  если Str1 < Str2, равно 0, если Str1 = Str2 или больше
0, если Str1 > Str2.

     См. также: StrComp, StrLComp, StrLIComp.


Функция StrLCat                                    модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Присоединяет копию одной строки к концу другой и
возвращает результат такой конкатенации.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function  StrLCat(Dest,  Source:  PChar;   MaxLen:
Word): PChar;

     Примечания: StrCat  добавляет к Dest копию строки Source (не
более MaxLen - StrLen(Dest) символов) и  возвращает  результат  в
Dest.  Для  определения  параметра MaxLen  вы можете использовать
функцию SizeOf.

     См. также: StrCat.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     var
       S: array[0..9] of Char;
     begin
        StrLCopy(S, 'Borland', SizeOf(S) - 1);
        StrLCat(S, ' ', SizeOf(S) - 1);
        StrLCat(S, 'Pascal', SizeOf(S) - 1);
        Writeln(S);
     end.

Функция StrLComp                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Сравнивает две строки до максимальной длины.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function   StrLComp(Str1,   Str2:  PChar;  MaxLen:
Word): Integer;

     Примечания: Функция StrLComp сравнивает строку Str1  с  Str2
до максимальной  длины  MaxLen  символов,  Возвращаемое  значение
меньше 0,  если Str1 < Str2, равно 0, если Str1 = Str2 или больше
0, если Str1 > Str2.

     См. также: StrComp, StrIComp, StrLIComp.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
       Result: PChar;
       S1, S2: array[0..79] of Char;
     begin
       Readln(S1);
       Readln(S2);
       if StrLComp(S1, S2, 5) = 0 then
           Result := 'равны'
       else
           Result := 'не равны'
     Writeln('Первые пять символов ', Result);
     end;

Функция StrLCopy                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Копирует символы из одной строки в другую.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function  StrLCopy(Dest,  Source:  PChar;  MaxLen:
Word): PChar;

     Примечания: Функция StrLCopy копирует не более MaxLen симво-
лов из строки Source в Dest и возвращает результат  в  Dest.  Для
определения параметра MaxLen можно использовать стандартную функ-
цию SizeOf (см. пример).

     См. также: StrCopy.

     Пример:

     { в Windows используйте WinCrt }
     uses Strings;
     const
     var
        S: array[0..9] of Char;
     begin
        StrLCopy(S, 'Borland Pascal', SizeOf(S) - 1);
        Writeln(S);
     end.


Функция StrLen                                     модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает число символов в Str.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function  StrLen(Str:  PChar): Word;

     Примечания: Функция StrLen возвращает число символов в  Str,
не считая нулевого завершающего символа.

     См. также: StrEnd.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
        S: array[0..79] of Char;
     begin
        Readln(S);
        Writeln('Длина строки равна ', StrLen(S));
     end.

Функция StrLIComp                                  модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Сравнивает две строки до максимальной длины,  не
различая регистр символов.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function   StrLIComp(Str1,  Str2:  PChar;  MaxLen:
Word): Integer;

     Примечания: Функция StrLComp сравнивает строку Str1  с  Str2
до максимальной длины MaxLen символов без различия регистра  сим-
волов. Возвращаемое значение меньше 0, если Str1 < Str2, равно 0,
если Str1 = Str2 или больше 0, если Str1 > Str2.

     См. также: StrComp, StrIComp, StrLComp.

Функция StrLower                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует строку в нижний регистр.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrLower(Str: PChar): PChar;

     Примечания: Функция StrLower преобразует строку Str в нижний
регистр и возвращает результат в Str.

     См. также: StrUpper.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
        S: array[0..79] of Char;
     begin
        Readln(S);
        Writeln(StrLower(S));
        Writeln(StrUpper(S));
     end.

Функция StrMove                                    модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Копирует символы из одной строки в другую.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function  StrMove(Dest,  Source:   PChar;   Count:
Word): PChar;

     Примечания: Функция StrMove копирует ровно Count символов из
строки Source в Dest и возвращает результат в Dest. Source и Dest
могут перекрываться.

     См. также: StrCopy.

     Пример:

     { распределить память для строки в динамической области }
     function StrNew(S: PChar): PChar;
     var
        L: Word;
        P: PChar;
     begin
        if (S = nil) or (S^ = #0) then StrNew := nil else
        begin
          L := StrLen(S) + 1;
          GetMem(P, L);
          StrNew := StrMove(P, S, L);
        end;
     end;

     { освободить память для строки в динамической области }
     procedure StrDispose(S: PChar);
     begin
        if S <> nil then FreeMem(S, StrLen(S) + 1);
     end;

Функция StrNew                                     модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выделяет память для строки в динамически распре-
деляемой области.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrNew(Str: PChar): PChar;

     Примечания: Функция StrNew выделяет память для строки Str  в
динамически распределяемой области. Если Str равно nil или указы-
вает на  пустую строку,  функция StrNew возвращает значение nil и
не выделяет память в динамической  области.  В  противном  случае
StrNew  создает копию Str,  получая память через вызов GetMem,  и
возвращает указатель на строку-дубликат.  Выделенная память имеет
размер StrLen(Str) + 1 байт.

     См. также: Dispose.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
        P: PChar;
        S: array[0..79] of Char;
     begin
        Readln(S);
        P := StrNew(S);
        Wruiteln(P);
        StrDispose(P);
     end.

Функция StrPas                                     модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует  строку с завершающим нулем в строку
Паскаля.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrPas(Str: PChar): String;

     Примечания: Функция  StrPas  преобразует строку Str в строку
Паскаля.

     См. также: StrCopy.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
        A: array[0..79] of Char;
        S: String[79];
     begin
        Readln(A);
        S := StrPas(A);
        Writeln(S);
     end.

Функция StrPCopy                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Копирует строку Паскаля в строку  с  завершающим
нулем.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrPCopy(Dest:  PChar;  Source:  String):
PChar;

     Примечания: Функция  StrPCopy копирует строку Паскаля Source
в Dest и возвращает результат в Dest. Вы должны обеспечить, чтобы
в  буфере,  заданном  параметром Dest,  было достаточно места для
StrLen(Source) + 1 символа.

     См. также: StrCopy.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
       A: array[0..79] of Char;
       S: string[79];
     begin
       Readln(S);
       StrPCopy(A, S);
       Writeln(A);
     end.

Функция StrPos                                     модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает указатель на первое вхождение  строки
в другой строке.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrPos(Str1, Str2:  PChar): PChar;

     Примечания: Функция StrPos возвращает  указатель  на  первый
экземпляр Str2 в Str1. Если Str2 не содержится в Str1, то возвра-
щается значение nil.

     См. также: StrCopy.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
       P: PChar;
       S, Substr: array[0..79] of Char;
     begin
       Readln(S);
       Readln(SubStr);
       P := StrPos(S, SubStr);
       if P = nil then
         Writeln('Подстрока не найдена');
       else
         Writeln('Подстрока найдена; индекс: ', P - S);
     end.

Функция StrRScan                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает указатель на последнее вхождение сим-
вола в строке.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrRScan(Str: PChar; Chr: Char): PChar;

     Примечания: Функция StrRScan возвращает указатель на послед-
нее вхождение символа Chr в строке Str.  Если Chr не содержится в
Str, то возвращается значение  nil.  Нулевой  завершающий  символ
считается частью строки.

     См. также: StrScan.

     Пример:

     { возвращает  указатель на имя файла в полном имени
       маршрута }
     function NamePart(FileName: PChar): PChar;
     var
       P: PChar;
     begin
       P := StrRScan(FileName, '\');
       if P = nil then P := FileName;
     end;
     NamePart := P;
     end.

Функция StrScan                                    модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает указатель на первое вхождение символа
в строке.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrScan(Str: PChar; Chr: Char): PChar;

     Примечания: Функция StrRScan возвращает указатель на  первое
вхождение символа Chr в строке Str. Если Chr не содержится в Str,
то возвращается значение nil. Нулевой завершающий символ считает-
ся частью строки.

     См. также: StrRScan.

     Пример:

     { возвращает True,  если имя файла содержит трафаретные сим-
       волы }
     function Wildcards(FileName: PChar): Boolean;
     begin
        HasWildcards := (StrScan(FileName, '*') <> nil) or
          (StrScan(FileName, '?') <> nil);
     end;

Функция StrUpper                                   модуль Strings
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует строку в верхний регистр.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function StrUpper(Str: PChar): PChar;

     Примечания: Функция StrUpper преобразует строку Str в  верх-
ний регистр и возвращает результат в Str.

     См. также: StrLower.

     Пример:

     { в Windows используйте модуль WinCrt }
     uses Strings;
     var
        S: array[0..79] of Char;
     begin
        Readln(S);
        Writeln(StrLower(S));
        Writeln(StrUpper(S));
     end.

Функция Succ                                        модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает следующее значение аргумента.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Succ(x);

     Примечания: Параметр x - выражение перечислимого  типа.  Ре-
зультат,  имеющий тот же тип, что и x, является следующим элемен-
том x.

     См. также: Dec, Pred, Inc.

Функция Swap                                        модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Переставляет местами старший и младший байты ар-
гумента.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Swap(x);

     Примечания: Параметр x - выражение типа Integer или Word.

     См. также функции Hi, Lo.

     Пример:

     var
       x : word;
     begin
      x := Swap($1234);                                 { $3412 }
     end.

Процедура SwapVectors                                  модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Меняет местами внутренние векторы.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure SwapVectors;

     Примечания: Меняет местами содержимое указателей SaveIntXX в
модуле System и текущее содержимое векторов прерываний. Процедура
SwapVectors обычно вызывается непосредственно перед и  непосредс-
твенно после вызова Exec.  Таким образом обеспечивается,  что вы-
полняемый по вызову Exec процесс не использует никаких обработчи-
ков прерываний, установленных текущим процессом и наоборот.

     См. также: Еxec.

     Пример:

     {$M 8192,0,0}
     uses Dos;
     var
       Command: string[79];
     begin
       Write('Введите команду DOS:');
       Readln(Command);
       if Command <> '' then
          Command := '/C' + Command;
       Swapvectors;
       Exec(GetEnv('COMSPEC'), Command);
       SvapVectors;
       if DosError <> 0 then
        Writeln('Командный файл COMMAND.COM выполнить нельзя');
     end.

Процедура TextBackGround                               модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выбирает фоновый цвет.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure TextBackGroud(Color: byte);

     Примечания: Параметр Color представляет собой выражение  це-
лого  типа  в  диапазоне  0...7,  соответствующее одной из первых
восьми констант цветов.

     В модуле Crt имеется байтовая переменная  ТехtAttr,  которая
используется  для  сохранения  текущего видеоатрибута.  Процедура
ТехtBackGround устанавливает биты 4-6 этой переменой в  соответс-
твии  с  параметром Color.  Фоновый цвет для всех выводимых далее
символов будет соответствовать заданному цвету.

      См. также: TextColor, HighVideo, LowVideo, NormVideo, конс-
танты цветов.

Процедура TextColor                                    модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выбирает цвет символа.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure TextColor(Color: Byte);

     Примечания: Параметр  Color представляет собой выражение це-
лого типа в диапазоне 0...15,  соответствующее одной из  констант
цветов, определенных в модуле Crt.

     В модуле  Crt имеется байтовая переменная ТехtAttr,  которая
используется для  сохранения  текущего  видеоатрибута.  Процедура
ТехtBасkGround  устанавливает биты 0-3 этой переменой в соответс-
твии с параметром Color.  Если параметр Color превышает  значение
15,  то  устанавливается также бит мерцания (бит 7),  в противном
случае он очищается.

     Вы можете задать мерцание символов путем прибавления  128  к
значению цвета.  Для этой цели определена константа Blink. Факти-
чески ради совместимости с версией 3.0 любое значение цвета, пре-
вышающее 15 вызывает мерцание символа.  Цвет всех выводимых далее
символов будет соответствовать указанному цвету.

     См. также:  TextBackGround,  HighVideo, NormVideo, LowVideo,
константы цветов.

     Пример:

     TextColor(Green);          ( выбрать зеленые символы }
     TextColor(LightRed+Blink)  ( выбрать мерцающие светло-
                                  красные символы }
     TextColor(14);             ( выбрать желтые символы }


Функция TextHeight                                   модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает высоту строки в  элементах  изображе-
ния.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: function TехtНеight(S: String): Word;

     Примечания: На основе размера текущего шрифта и коэффициента
размера определяет  строки,  заданной  параметром S,  в элементах
изображения.  Это полезно использовать для выбора интервала между
строками, вычисления высоты области просмотра, определения разме-
ра заголовка, чтобы он поместился в заданном рисунке или в задан-
ную область и т.д.  Например, при использовании шрифта с двоичным
образом  8х8  и  коэффициента размера 1 (установленных процедурой
SetTextStyle) строка Тurbо будет иметь высоту 8 элементов изобра-
жения.

     Очень важно использовать процедуру TextHeight для вычисления
высоты строк,  вместо того,  чтобы делать это вручную.  Тогда при
выборе различных шрифтов отпадает необходимость  изменения текста
программы.

     Ограничения: Должен использоваться графический режим.

     См. также:  OutText,  OutTextXY,  SetTextStyle,   TextWidth,
SetUserCharSize.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
        Y, Size : integer;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
       Y := 0;
       for Size := 1 to 5 do
       begin
         SetTextStyle(DefaultFont, HorizText, Size);
         OutTextXY(0, Y, 'Графика Borland');
         Inc(Y, TextWidth('Графика Borland'));
       end;
       Readln;
        CloseGraph;
     end.


Процедура TextMode                                     модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выбирает указанный текстовый режим.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure TехtМоdе(Mode: Integer);

     Примечания: При вызове процедуры TехtМоdе сбрасывается теку-
щее  окно  и в качестве текущего окна рассматривается вся область
экрана,  для  DirectVideo  устанавливается  значение  True,   для
CheckSnow  также  устанавливается  значение Truе (если был выбран
цветной режим), и текущий текстовый атрибут  сбрасывается  в нор-
мальное   состояние,   соответствующее   обращению   к  процедуре
NormVideo,  а текущий видеорежим сохраняется в LastMode. При ини-
циализации программы LastMode получает значение текущего видеоре-
жима.

     Задание TextMode(LastMode) приводит к тому,  что вновь будет
выбран последний  активный текстовый режим.  Это бывает полезно в
том случае,  когда после использования графических средств вы хо-
тите вернуться в текстовый режим.

     Обращение вида:

     TextMode(c80 + Font8x8)

приведет к тому, что дисплей будет сброшен в состояние, при кото-
ром  используется  43  строки и 80 позиций в строке и графический
адаптер VGA с цветным монитором. Обращение TextMode(Lo(LastMode))
всегда выключает 43 или 50-строчные режимы и  сбрасывает  дисплей
(хотя его видеорежим остается неизмененным), а вызов:

     TextMode(lo(LastMode)+Font8x8)

оставит видеорежим  тем  же  самым,  но  сбросит дисплей в 43 или
50-строчный режим.

     Если при загрузке программы Borland Pascal ваша система  на-
ходится в 43 или 50-строчном режиме,  этот режим будет сохранен в
секции инициализации модуля Crt, и переменная, в которой отслежи-
вается максимальное число строк на экране (WindMax) будет инициа-
лизирована правильно.

     Приведем пример "корректной" программы, которая восстанавли-
вает видеорежим в исходное состояние.

     program Video;
     uses Crt;
     var
       OrigMode : integer;
     begin
       OrigMode := LastMode;  { сохранить исходный режим }
         .
         .
         .
       TextMode(OrigMode);
     end.

     Заметим, что  процедура TextMode не поддерживает графических
режимов.  Таким образом TextMode(OrigMode) будет  восстанавливать
только те режимы, которые поддерживаются процедурой TextMode.

     См. также: RestoreCrtMode, константы режима Crt.



Функция TextWidth                                    модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает ширину строки в  элементах  изображе-
ния.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: function TехtWidth(S: String): Word;

     Примечания: На основе длины строки (в символах), размера те-
кущего шрифта и коэффициента размера определяет длину строки, за-
данной параметром S, в элементах изображения. Это полезно исполь-
зовать для выбора интервала  между  строками,  вычисления  ширины
области просмотра, определения размера заголовка, чтобы он помес-
тился в заданном рисунке или в заданную область и  т.д.

     Например, при использовании шрифта с двоичным образом 8х8  и
коэффициента  размера  1 (установленными процедурой SetTextStyle)
строка Тurbо будет иметь длину 40 элементов изображения.

     Очень важно  использовать процедуру TextWidth для вычисления
ширины строк,  вместо того,  чтобы делать это вручную.  Тогда при
выборе  различных шрифтов отпадает необходимость изменения текста
программы.

      См. также:  OutText,  OutTextXY,  SetTextStyle, TextHeight,
SetUserCharSize.

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
        Row, Size : integer;
       Title : string;
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
       Row := 0;
       Title := 'Turbo Graphics';
     Size := 1;
     while TextWidth(Title) < WindiwWidth do
     begin
       OutTextXY(0, Row, Title);
       Inc(Row, TextHeight('M'));
       Inc(Size);
       SetTextStyle(DefaultFont, HorizDir, Size);
     end;
     Readln
     CloseGraph;
     end.



Процедура TitlePrn                                  модуль WinPrn
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Создает заголовок печатаемого файла.

     Целевая платформа: Windows.

     Описание: procedure TitlePrn(var F: Text; Title: PChar);

     Примечания: Выводит заголовок задания печати для администра-
тора печати  Windows  и  заголовки,  выводимые при печати в сети.
Процедура TitlePrn должна вызываться перед ReWrite,  иначе она не
действует.

     Пример: См. пример для AbortPrn.

     См. также: AbortPrn, AssingDefPrn, AssignPrn, SetPrnFont.


Процедура TrackCursor                               модуль WinCrt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Прокручивает окно Crt для обеспечения  видимости
курсора.

     Целевая платформа: Windows.

     Описание: procedure TrackCursor;

     См. также: ScrollTo.

Функция Trunc                                       модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Округляет значение вещественного типа до  значе-
ния целого типа.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function Trunc(x: Real): Longint;

     Примечания: Параметр  x представляет собой выражение вещест-
венного типа.  Функция Round возвращает значение длинного  целого
типа, которое является значением x, округленным в сторону нуля.

     Ограничения: Если округленное значение  x  не  соответствует
диапазону представления длинного целого типа, то происходит ошиб-
ка этапа выполнения.

      См. также: Round, Int.

Процедура Truncate                                  модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Усекает размер файла до текущей позиции в файле.

     Описание: procedure Truncate(var f);

     Примечания: Параметр  f  является файловой переменной любого
типа. Все записи после текущей позиции в файле f удаляются, и те-
кущая  позиция  в  файле  становится концом файла (функция Eof(f)
принимает значение True).

     При указании директивы компилятора  {$I-}  функция  IORеsult
будет возвращать значение 0 в том случае,  если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

     Ограничения: Файл f должен быть открыт.

     См. также: Seek, Reset.


Функция TypeOf                                      модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  указатель на таблицу виртуальных ме-
тодов объекта (VMT).

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function TypeOf(X): Pointer;

     Примечания: X - идентификатор объекта или экземпляра объект-
ного типа.  В любом случае TypeOf возвращает адрес таблицы вирту-
альных методов объектного типа. TypeOf может применяться только к
объектным типам,  имеющим таблицу виртуальных методов. Все другие
методы дают в результате ошибку. См. Главу 21 ("Вопросы использо-
вания памяти") в "Руководстве по языку".

Функция UnlockResource                              модуль WinAPI
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Разблокирует ресурс.

     Целевая платформа: Защищенный режим, Windows.

     Описание: function UnlockResource(ResData: THandle): Bool;

     Примечания: Данная  функция  разблокирует  ресурс,  заданный
параметром ResData.  Параметр ResData должен  представлять  собой
описатель ресурса,  созданный с помощью LoadResource. Если ресурс
является выгружаемым, то его счетчик блокировки уменьшается на 1.
Если значение  счетчика блокировки становится нулевым,  то ресурс
разблокируется и подлежит выгрузке.  Если счетчик блокировки  ре-
сурса уменьшен до 0, то возвращаемое значение равно False, в про-
тивном случае возвращается значение True.

     Каждый раз,  когда прикладная программа вызывает для ресурса
функцию LockResource,  она  должна в итоге вызывать для этого ре-
сурса функцию UnlockResource.

     См. также: LoadResource, LockResource.


Функция UnlockSegment                               модуль WinAPI
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Разблокирует сегмент.

     Целевая платформа: Защищенный режим, Windows.

     Описание: function UnlockSegment(Segment: Word): THandle;

     Примечания: Параметр Segment задает селектор разблокируемого
сегмента.  Если сегмент является выгружаемым, то его счетчик бло-
кировки уменьшается на 1.  Если значение счетчика блокировки ста-
новится нулевым,  то разблокируется  и  подлежит  выгрузке.  Если
счетчик блокировки ресурса уменьшен до 0,  то возвращаемое значе-
ние равно False,  в противном случае возвращается значение  True.
Для невыгружаемых сегментов функция UnlockSegment не действует.

     Каждый раз,  когда прикладная программа вызывает для ресурса
функцию LockResource,  она  должна в итоге вызывать для этого ре-
сурса функцию UnlockResource.

     См. также: LockSegment.

Процедура UnpackTime                           модуль Dos, WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует четырехбайтовое значение,  представ-
ляющее  собой  упакованный длинный целый тип представления даты и
времени,  возвращаемый процедурами GetTime, FindFirst и FindNext,
в распакованную запись DateTime (дата и время)

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: procedure   UnpackTime(Time:   Longint;   var  DT:
DatewTime);

     Примечания: Запись DateTime описана в модуле  Dos.  Проверка
диапазона для полей времени Time не выполняется.

     См. также: PackTime, GetFTime, SetFTime, GetTime, SetTime.

Функция UpCase                                      модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует символ в верхний регистр.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: function UpCase(Ch: Char);

     Примечания: Параметр Ch представляет  собой  выражение  сим-
вольного типа. Результатом символьного типа будет символ, задава-
емый параметром  Ch,  преобразованный в символ верхнего регистра.
Значения символов, не лежащие в диапазоне а...z, остаются без из-
менений.

Процедура Val                                       модуль System
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Преобразует строковое значение в  его  численное
представление.

     Целевая платформа:   Защищенный   режим,   реальный   режим,
Windows.

     Описание: procedure  Val(s:  String;  var   v;   var   Code:
Integer);

     Примечания: Параметр  s представляет собой выражение строко-
вого типа. Параметр v является переменной целого или вещественно-
го типа. Параметр Code - это переменная целого типа, которая фор-
мирует все число со знаком. Функция Val преобразует строку s в ее
численное представление и сохраняет результат в v.  Если где-либо
в строке встречается недопустимый символ, то его номер сохраняет-
ся в параметре Code. В противном случае этот параметр равен нулю.

     В зависимости от состояния {$R} и типа параметра  v  функция
Val по-разному выполняет проверку диапазона.

     Если состояние проверки диапазона установлено, то есть зада-
но {$R+},  то выражения,  выходящие за границу диапазона,  всегда
будут генерировать ошибку этапа выполнения.

     Если состояние  проверки диапазона сброшено,  то есть задано
{$R-}, то выражения,  выходящие за границу диапазона, будут вызы-
вать  эффект,  зависящий  от  их типа.  Если v имеет тип real или
longint,  то значение v становится неопределенным и  в  параметре
Code возвращается ненулевое значение. Для любого другого числово-
го типа в параметре Code возвращается нулевое значение, а v будет
содержать  результат  вычислений  с переполнением (если предполо-
жить,  что строковое значение попадает в  диапазон  представления
длинного целого).

     Таким образом, передав процедуре Val переменную длинного це-
лого типа (longint) и перед тем,  как присваивать полученное зна-
чение, следует выполнять проверку диапазона. Например:

     {$R-}
     Val('65536', LongIntVar, Code);
     if (Code <>0) or
        (LOngIntVar < 0) or (LongIntVar > 65535) then
          .             { ошибка }
          .
          .
     else
       WordVar := LongIntVar;

     В этом примере LongIntVar будет установлена в 65536,  а Code
будет равно 0. Поскольку для переменной Word значение 65536 выхо-
дит за допустимый диапазон, будет сообщаться об ошибке.

     Ограничения: Предшествующие пробелы должны быть удалены.

     См. также: Str.

     Пример:

     var
       i, code : integer;
      begin
        { получить текст из командной строки }
        Val(ParamStr(1), i, code);
        { ошибка при преобразовании в целое значение? }
        if code <> 0 then
           Writeln('Ошибка на позиции :', code);
        else
           Writeln('Значение = ', i);
     end.



Функция WhereX                                         модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  для  текущей позиции курсора относи-
тельно текущего окна координату Х.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: function WhereX: Byte;

     См. также: WhereY, GotoXY, Window.

Функция WhereX                                      модуль WinCrt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  для  текущей позиции курсора относи-
тельно текущего окна координату Х текущей позиции курсора.

     Целевая платформа: Windows.

     Описание: function WhereX: Byte;

     Примечание: Возвращаемое значение является координатой, отс-
читываемой от 1, и соответствует Cursor.X + 1.

     См. также: WhereY, GotoXY, Window.


Функция WhereY                                         модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает для текущей позиции  курсора  относи-
тельно текущего окна координату Y.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: function WhereY: Byte;

     См. также: WhereX, GotoXY, Window.


Функция WhereY                                      модуль WinCrt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает для текущей позиции  курсора  относи-
тельно текущего окна координату Y текущей позиции курсора.

     Целевая платформа: Windows.

     Описание: function WhereY: Byte;

     Примечание: Возвращаемое значение является координатой, отс-
читываемой от 1, и соответствует Cursor.Y + 1.

     См. также: WhereX, GotoXY, Window.

Процедура Window                                       модуль Crt
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Определяет на экране текстовое окно.

     Целевая платформа: Защищенный режим, реальный режим.

     Описание: procedure Window(X1, Y1, X2, Y2: Byte);

     Примечания: Параметры  Х1,  Y1 представляют собой координаты
верхнего левого угла окна, параметры Х2, Y2 - это координаты пра-
вого нижнего угла. Правый левый угол экрана соответствует коорди-
нате (1,1).  Минимальный размер текстового окна - один столбец на
одну строку. Если координаты являются каким-то образом недопусти-
мыми, то обращение к процедуре Window игнорируется.

     В 80-символьных режимах по умолчанию определяется окно (1,1,
80,25), а в 40-символьных режимах - (1,1,40,25), что соответству-
ет всему экрану.

     Все координаты  экрана (кроме самих координат окна) являются
относительными координатами данного окна.  Например,  GotoXY(1,1)
всегда  позиционирует курсор на верхний левый угол текущего окна.

     Многие процедуры  и  функции  модуля  Crt,  включая  ClrEol,
ClrScr, DelLine,  GotoXY,  InsLine, WhereX, WhereY, Read, Readln,
Write, Writeln, зависят от текущего окна.

     Процедуры WindMin и WindМах  сохраняют  текущее  определение
окна.

     Пример:

     uses Crt;
     var
       x, y : byte;
     begin
       TextBackGround(Black);        { очистить экран }
       ClrScr;
       repeat
         x := Succ(Random(80));      { нарисовать случайным
                                        образом окна }
         y := Succ(random(25));
         Window(x, y, x + Random(10), y + Random(8));
         TextBackGround(Random(16));  { использовать случайные
                                        фоновые цвета }
         ClrScr;
       until KeyPressed;
     end.



Яндекс цитирования