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



 

Часть 4


Функция FExpand                                        модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Расширяет имя файла до полного имени файла.

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

     Описание: function FExpand(path :PathStr): PathStr;

     Примечания: Расширяет   имя  файла,  задаваемого  параметром
маршрута Path,  до полного имени файла.  Полученное в  результате
имя  преобразуется  в  прописные буквы и содержит буквенную метку
дисковода, двоеточие, путь доступа относительно корневого катало-
га и имя файла. Внутренние ссылки на каталоги ".." и "." удаляют-
ся.

     Тип PathType   определен   в   модуле   DOS  в  виде  строки
(string[79]).

     Предположим, что  текущим  диском   и   каталогом   является
C:\SOURCE\PAS. Тогда следующие вызовы процедуры FExpand дадут та-
кие значения:

     FExpand('test.pas')         = 'C:\SOURCE\PAS\TEST.PAS'
     FExpand('../*.TPU')         = 'C:\SOURCE\*.TPU'
     FExpand('c:\bin\turbo.exe') = 'C:\BIN\TURBO.EXE'

     См. также: FindFirst, FindNext, FSplit, строковые типы рабо-
ты с файлами.

Функция FileExpand                                  модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Расширяет имя  файла  до  полностью  уточненного
имени файла.

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

     Описание: function FileExpand(Dest, Name: PChar): PChar;

     Примечания: Расширяет  имя  файла,  задаваемого   параметром
Name,  до полного имени файла. Полученное в результате имя преоб-
разуется в  буквы  верхнего  регистра  и содержит буквенную метку
дисковода,  двоеточие,  маршрут относительно корневого каталога и
имя  файла.  Внутренние  ссылки на каталоги ".." и "." удаляются.
Компоненты имени файла и расширения усекаются соответственно до 8
и  3 символов.  Результат Dest и Name могут ссылаться на один ад-
рес.

     Предположим, что  текущим  диском   и   каталогом   является
C:\SOURCE\PAS. Тогда  следующие вызовы процедуры FileExpand дадут
такие значения:

     FileExpand(S,'test.pas')         = 'C:\SOURCE\PAS\TEST.PAS'
     FileExpand(S,'../*.TPU')         = 'C:\SOURCE\*.TPU'
     FileExpand(S,'c:\bin\turbo.exe') = 'C:\BIN\TURBO.EXE'

     См. также: FindFirst, FindNext, FSplit, строковые типы рабо-
ты с файлами.

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

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

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

     Описание: function FilePos(var f): Longint;

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

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

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

     См. также: FileSize, Seek.

Функция FileSearch                                  модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Ищет файл в списке каталогов.

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

     Описание: function FilePos(Dest, Name, List: PChar): PChar;

     Примечания: Ищет файл с именем Name в списке каталогов,  за-
данным параметром List. Каталоги в List должны разделяться точка-
ми с запятой,  аналогично каталогам, заданным в команде DOS PATH.
Поиск начинается всегда с текущего каталога текущего диска.  Если
файл не найден, FileSearch записывает в Dest конкатенация маршру-
та каталога и имени файла.  В противном случае FileSearch записы-
вает в Dest пустую  строку.  Возвращаемое  значение  находится  в
Dest. Dest и Name не должны ссылаться на одно и то же.

     Максимальная длина   результата   определяется    константой
fsPathName (которая равна 79).

     Чтобы искать выполняемые файлы  по  маршруту  DOS,  вызовите
GetEnvVar('PATH') и передайте результат FileSearch в качестве па-
раметра List.

     Результат FileSearch  можно передать FileExpand для преобра-
зования его в полностью уточненное имя файла, то есть имя файла в
верхнем регистре, включающее в себя буквенную метку диска и марш-
рут относительно корневого каталога.  Кроме того,  вы можете  ис-
пользовать для  разбиения  имени  файла на строку диска/каталога,
строку имени файла и строку расширения,  вы  можете  использовать
функцию FileSplit.

     См. также: FileExpand, FileSplit, константы длины имени фай-
ла, FSearch.

     Пример:

     { под Windows используйте модуль WinCrt }
     uses WinDos;
     var
       S: array[0..fsPathName] of Char;
     begin
       FileSearch(S, 'BP.EXE', GetEnvVar('PATH'));
     if S[0] = #0 then
       Writeln('BP.EXE не найден')
     else
       Writeln('Найден как ',FileExpand(S, S));
     end.

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

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

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

     Описание: function FileSize(var f): Longint;

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

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

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

     См. также: FilePos.

     Пример:

     { под Windows используйте модуль WinCrt }
     var
       f : file of byte;
     begin
      { получить имя файла из командной строки }
      Assign(f, ParamStr(1));
      Reset(f);
      Writeln('Размер файла в байтах: ', FileSize(f));
      Close(f);
     end.

Функция FileSplit                                   модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Разбивает полное имя файла на три компонента.

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

     Описание: function FileSplit(Path,  Dir,  Name, Ext: PChar):
Word;

     Примечания: Разбивает полное имя файла,  заданное параметром
Path, на три компонента. Dir будет содержать буквенную метку дис-
ка и маршрут каталога с предшествующей и завершающей обратной ко-
сой чертой,  Name - имя файла,  а Ext - расширение имени файла  с
предшествующей точкой.  Если строковый параметр-компонент  содер-
жит nil,  то соответствующая часть маршрута не записывается. Если
маршрут не содержит данного компонента,  возвращаемая строка ком-
понента будет пуста. Максимальные длины строк, возвращаемые в па-
раметрах Dir,  Name и Ext,  определяются константами fsDirectory,
fsFileName и fsExtension.

     Возвращаемое значение  является  комбинацией  битовых  масок
fcDirectory, fcFileName и fcExtension,  указывающих, сколько ком-
понентов присутствовало в маршруте.  Если имя или расширение  со-
держит трафаретные символы (* или ?),  то в возвращаемом значении
устанавливается флаг fcWildCard.  См. в данной главе список конс-
тант fcXXXX и fsXXXX.

     См. также: FileExpand,FindFirst, FindNext, FSplit.

     Пример:

     { под Windows используйте модуль WinCrt }
     var
       Path:   array[0..fsPathName]  of Char;
       Dir:    array[0..fsDirectory] of Char;
       Name:   array[0..fsFileName]  of Char;
       Ext:    array[0..fsExtension] of Char;
     begin
       Write('Имя файла (WORK.PAS: ');
       Readln(Path);
       FileSplit(Path, Dir, Name, Ext);
       if Name[0] = #0 then StrCopy(Name, 'WORK');
       if Ext[0] = #0 then StrCopy(Ext, '.PAS');
       StrECopy(StrECopy(StrECopy(Path, Dir), Name), Ext);
       Writeln('Полученное в результате имя: ', Path);
     end.


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

     Назначение: Помещает в заданное число следующих друг за дру-
гом байт указанное значение.

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

     Описание: procedure FillChar(var x; Count: Word; Val);

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

     Если это возможно,  при использовании процедуры FillChar за-
давайте параметр Count с помощью функции SizeOf.  При использова-
нии этой процедуры для строк не забудьте после заполнения устано-
вить длину в байтах.

     См. также: Моvе.

     Пример:

     var
      s : string[80];
     begin
      { задать строку, состоящую из пробелов }
      FillChar(s, SizeOf(s),' ');     { установить длину последо-
                                        вательности байт }
      s[0] := #80;
     end.

Функция FillEllipse                                    модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Рисует эллипс.

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

     Описание: procedure FillEllipse(X,  Y:  Integer; ХRad, YRad:
Word);

     Примечания: Используя  точку с координатами (X,Y) в качестве
центра, а XRad и YRad - в качестве горизонтальной  и вертикальной
осей, рисует закрашенный эллипс.

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

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

     Пример:

     uses
       Graph;
     const
       R = 30;
     var
       Driver, Mode: integer;
       Xasp, Yasp : word;
     begin
       Driver := Detect;       { переводит в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
       { нарисовать эллипс }
       FillEllipse(GetMaxX div 2, GetMaxY div 2, 50, 50);
       GetAspectRatio(Xasp, Yasp);
       { "круглый" эллипс }
       FillEllipse(R, R, R, R, * LongInt(Xasp) div Yasp);
      ReadLn;
      CloseGraph;
     end.

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

     Назначение: Рисует закрашенный многоугольник.

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

     Описание: procedure FillPoly((N : Word; var S);

     Примечания: Параметр S является нетипизированным параметром,
который  содержит координаты каждого пересечения сторон в многоу-
гольнике (координаты вершин). Параметр N задает число координат в
S. Координата состоит из двух слов: значения x и значения y.

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

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

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

     См. также:   DrawPoly,   GetFillSettings,   GetLineSettings,
SetLineStyle, GraphResult, SetLineStyle.

     Пример:

     uses Graph;
     const
     Pentagon : array[1..6] of PointType =
       ((x: 50; y: 50),
        (x: 75; y: 75),
        (x: 62; y: 100),
        (x: 48; y: 100),
        (x: 25, y: 75),
        (x: 50, y: 50));
     begin
       Gd := Detect;
       InitGraph(Gd, Gm, '');
       if GraphResult <> grOk then
          Halt(1);
       DrawPoly(SizeOf(Pentagon)
              div SizeOf(PointType), Pentagon);
       FillPoly(SizeOf(Pentagon)
              div SizeOf(PointType), Pentagon);
       Readln;
       CloseGraph;
     end.

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

     Назначение: Производит поиск в заданном (или текущем)  ката-
логе первой записи, соответствующей заданному имени файла и набо-
ру атрибутов файла.

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

     Описание:

     procedure FindFirst(Path:  String;  Attr:   Bytе;   var   S:
SearchRec);                                           { DOS }

     procedure FindFirst(Path:    String;   Attr:  Bytе;   var S:
TSearchRec);                                          { Windows }

     Примечания: Параметр   Path   определяет  каталог,  например
"*.*".  Параметр Attr определяет включение в список рассматривае-
мых специальные файлы (наряду со всеми обычными файлами).  Список
атрибутов файла,  как они описаны в модуле Dos и в WinDow, вы мо-
жете найти в данной главе.

     Результат поиска  по каталогу возвращается в заданной записи
типа SearchRec,  который описывается в модуле Dos,  и TSearchRec,
который описывается в модуле WinDos.

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

     См. также:  FindNext,  DosError, FExpand, константы атрибута
файла, FileExpand, SearchRec, TSearchRec.

     Пример:

     { под Windows используйте WinCrt }
     uses Dos;
     var
     { под Windows используйте TSearchRec }
       DirInfo : SearchRec;
     begin
     { под Windows используйте fArchive }
       FindFirst('*.PAS', Archive, DirInfo); { то же, что и
                                               DIR *.PAS }
       while DosError = 0 do
       begin
         Writeln(DirInfo.Name);
         FindNext(DirInfo);
       end;
     end.

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

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

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

     Описание:

     procedure FindNext(var s: SearchRec);          { DOS }

     procedure FindNext(var s: TSearchRec);         { Windows }

     Примечания: Параметр s должен быть таким же, как при обраще-
нии к  FindFirst  (тип  SearchRec  описывается  в  модуле Dos,  а
TSearchRec - в WinDos).  С помощью DosError  можно  получить  код
ошибки.  Единственно возможным кодом является код 18, указывающий
на отсутствие файлов.

     См. также:  FindFirst, DosError, FExpand, константы атрибута
файла, FileExpand, SearchRec, TSearchRec.

     Пример: См. пример для процедуры FindFirst.

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

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

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

     Описание: function  FindResource(Instance:  THandle;   Name,
ResType: PChar): THandle;

     Примечания: Находит  в  файле  ресурса,  заданном параметром
Instance, ресурс,  заданный параметрами имени Name и типа ресурса
ResType, и возвращает описатель информации о ресурсе. Если ресурс
не найден,  то возвращается нулевое значение. Параметр Instance -
это описатель экземпляра модуля,  получаемый обычно из переменной
HInstance модуля System или  создаваемый  LoadLibrary.  Параметры
Name и ResType указывают либо на строку с завершающим нулем, либо
задают порядковое значение. В последнем случае старшее слово Name
или ResType равно 0, а младшее содержит порядковое значение.

     См. также: AccessResource, LoadResource, SizeofResource.

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

     Назначение: Закрашивает ограниченную область,  используя те-
кущий заполнитель.

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

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

     Примечания: Эта  процедура используется для заполнения замк-
нутой области (на  экране).  Точка  (x,y)  является  произвольной
внутренней  точкой  заполняемой области.  Для заполнения области,
ограниченной цветом,  которую определяет параметр S, используется
текущий образец закраски. Если точка (x,y) находится внутри замк-
нутой области,  то заполняется внутренняя область. Если эта точка
находится вне замкнутой области,  то заполняется ее внешняя часть
(поле экрана, не входящее в область).

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

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

     program StopFill;
     uses Graph;
     var
       Driver, Mode: integer;
     begin
       Driver := Detect;
       InitGraph(Driver, Mode, 'c:\bgi');
       if GraphResult <> grOk then
          Halt(1);
       SetFillStyle(LtSlashFill, GetMaxColor);
       Rectangle(0, 0, 8, 20);
       FloodFill(1, 1, GetMaxColor);
       ReadLn;
       CloseGraph;
     end.

     В этом  случае прямоугольник будет полностью закрашен,  если
использовать более "густой" заполнитель типа SlashFill.

     Ограничения: Используя,  где это возможно,  вместо FloodFill
FillPoly, вы можете обеспечить совместимость кода с будущими вер-
сиями. Должен  использоваться  графический режим.  При применении
графического драйвера IBM 8514 (IBM8514.BGI) данная процедура не-
доступна.

     См. также:     SetFillPattern,    FillPoly,    SetFillStyle,
GraphResult.

     Пример:

     uses Graph;
     var
       Driver, Mode: integer;
     begin
       Driver := Detect;
       InitGraph(Driver, Mode, '');
       if GraphResult <> grOk then
          Halt(1);
       SetColor(Red);
       FloodFill(50,50,GetMaxColor);
       Readln;
       CloseGraph:
     end.



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

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

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

     Описание: procedure Flush(var f: Text);

     Примечания: Параметр f является файловой переменной  тексто-
вого типа.

     Когда текстовый файл открывается для вывода с помощью проце-
дур Rewrite или Appеnd,  обращение к  процедуре  Flush  позволяет
очистить буфер файла. Это обеспечивает то, что все символы, запи-
санные в это время в файл,  будут действительно записаны во внеш-
ний файл.  Для файлов, открытых для ввода, данная процедура ника-
ких действий не выполняет.

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

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

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

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

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

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

     См. также: Int.

     Пример:

     var
        r : real;
     begin
        f := Frac(123.456);                     { 0.456 }
     end.

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

     Назначение: Освобождает динамически загружаемую библиотеку.

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

     Описание: procedure FreeLibrary(LibModule: THandle);

     Примечания: Параметр LibModule должен  быть  описателем  эк-
земпляра модуля, созданного LoadLibrary. FreeLibrary уменьшает на
1 счетчик ссылок для данной библиотеки, и, если значение счетчика
становится равным 0, занятая библиотекой память освобождается.

     Ограничения: Динамически  компонуемая  библиотека  (DLL)  не
должна освобождать память в своей функции выхода (WEP).

     См. также: LoadLibrary.

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

     Назначение: Уничтожает динамическую переменную данного  раз-
мера.

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

     Описание: procedure FrееМем(var P : Pоinter; Size : Word);

     Примечания: Параметр  P  является  указателем  на переменную
(относящимся к любому типу указателей), для которого было предва-
рительно  выполнено  присваивание  с помощью процедуры GetМем или
которому было присвоено значащее  значение  с  помощью  оператора
присваивания. Параметр Size представляет собой выражение длиной в
слово, которое задает размер уничтожаемой динамической переменной
(в байтах).  Его значение должно в точности соответствовать числу
байт памяти,  отведенных ранее для переменной процедурой  GetМем.
Процедура FrееМем уничтожает переменную,  на которую указывает P,
и освобождает занятую ей область памяти в динамически распределя-
емой  области.  Если указатель p не ссылается на область памяти в
динамически распределяемой области,  то во время выполнения прог-
раммы возникает ошибка.  После обращения к процедуре FrееМем зна-
чение указателя p становится неопределенным, а последующие ссылки
вида p^ будут приводить к ошибке.

     См. также: Dispose, GetMem, Release.

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

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

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

     Описание: function FreeResource(ResData: THandle): Bool;

     Примечания: Освобождает  занимаемую  данным ресурсом память.
Параметр ResData должен  представлять  собой  описатель  ресурса,
созданный LoadResource.

     FreeResource уменьшает счетчик ссылок для заданного ресурса.
FreeResource не выполняет фактического освобождения ресурса, пока
счетчик ссылок  не  станет  равным  нулю  (то  есть число вызовов
FreeResource не станет равным числу вызовов LoadResource).

     Если FreeResource завершается неудачно, и ресурс не освобож-
дается, то возвращаемое значение равно True;  если функция завер-
шается успешно, то возвращается значение False.

     См. также: LoadResource.

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

     Назначение: Освобождает селектор.

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

     Описание: function FreeSelector(Selector: Word): Word;

     Примечания: Освобождает селектор,  созданный первоначально с
помощью AllocSelector   или   AllocDStoCSAlias.   После    вызова
FreeSelector селектор  становится недопустимым и больше использо-
ваться не может. В случае успешного выполнения функции возвращае-
мое значение  равно  0,  в противном случае возвращается значение
заданного селектора.

     См. также: AllocDStoCSAlias, AllocSelector.

Функция FSearch                                        модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Ищет файл в списке каталогов.

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

     Описание: function   FSearch(Path:   PathStr;   L:  String):
PathStr;

     Примечания: Функция  выполняет поиск файла,  заданного пара-
метром Path,  в списке каталогов, заданных параметром L. Каталоги
в списке должны разделяться точкой с запятой аналогично тому, как
это делается в команде операционной системы DOS PATH. Поиск начи-
нается  всегда с текущего каталога на текущем диске. Возвращаемое
значение представляет собой конкатенацию одного из маршрутов  ка-
талогов и имени файла или,  в том случае, если файл найден не бу-
дет, пустую строку. Тип PathStr описан в модуле Dos (см. выше).

     Для нахождения выполняемых файлов с помощью команды DOS PATH
нужно вызвать процедуру GetEnv('PATH') и передать результат функ-
ции FSearch в качестве параметра L.

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

     См. также: FExpand, FSplit, GetEnv.

     Пример:

     uses Dos;
     var
       S: PathStr;
     begin
       S: := FSearch('TURBO.EXE', GetEv('PATH'));
       if S = '' then
          WriteLn('Файл TURBO.EXE не найден');
       else
          WriteLn('Найден файл ',FExpand(S));
     end.

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

     Назначение: Разделяет имя файла на три компоненты.

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

     Описание: procedure FSplit(Path:  PathStr;  var Dir: DirStr;
var Name: NameStr; var Ext: ExtStr);

     Примечания: Имя файла, заданное параметром Path, разделяется
на три его компоненты.  Для переменной Dir устанавливается значе-
ние  буквенной  метки  дисковода и маршрута доступа к каталогу со
всеми начальными и конечными знаками обратной косой черты,  пере-
менной Name присваивается значение имени файла,  а переменной Ext
- расширение имени файла с предшествующей точкой.  Каждый из этих
составляющих строку элементов может оказаться пустым (в том  слу-
чае, если Path не содержит соответствующего элемента).

     Типы PathStr,  DirStr,  ExtStr и NameStr определены в модуле
Dos (см. строковые типы работы с файлом).

     При разделении имени файла на компоненты FSplit не добавляет
и не  удаляет  никаких символов.  При конкатенации результирующих
переменных Dir, Name и Ext будет получен заданный маршрут.

     Пример:

     uses Dos;
     var
       P: PathStr;
       D: DirStr;
       N: NameStr;
       E: ExtStr;
     begin
       Write('Имя файла (WORK.PAS) : ')
       ReadLn(P);
       FSplit(p, D, N, E);
       if N = '' then N:='WORK';
       if E = '' then E:='.PAS';
       P := D + N + E;
       WriteLn('Результирующее имя = ',P);
     end.

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

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

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

     Описание: procedure GetArcCoords(var Coords: ArcCoordsType);

     Примечания: Данная процедура возвращает переменную  (коорди-
наты) типа CoordType,  который является предописанным и определен
в модуле Graph.

     Процедура GetArcCoords  возвращает  переменную,   содержащую
точку центра (Х,Y),  начальную позицию (Хbeg,Ybeg) и конечную по-
зицию (Хend,Yend) последней команды Arс.  Эти значения могут быть
полезными, если вы хотите, например, провести прямую, начинающую-
ся от конца дуги.

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

     См. также: Arc, Ellipse, PieSlice, PieSliceXY.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       ArcCoords : ArcCoordsType;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
         Halt(1);
       Arc(100,100,0,89,30);
       GetArcCoords(ArcCoorsType);
       MoveTo(100,100);
       with ArcCoords do
           Line(Xstart, Ystart, Xend, Yend);
       Readln;
       CloseGraph;
     end.

Функция GetArgCount                                 модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Описание: procedure GetArgCount: Integer;

     См. также: GetArgStr, ParamCount, ParamStr.

Функция GetArgStr                                   модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Описание: procedure GetArgSrt(Dest:  PChar; Index:  Integer;
MaxLen: Word): PChar;

     Примечания: Если Index имеет значение, меньшее 0 или большее
GetArgCount, то данная функция возвращает пустую  строку.  Макси-
мальная длина возвращаемой строки определяется параметром MaxLen.

     См. также: GetArgCount, ParamCount, ParamStr.

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

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

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

     Описание: procedure GetAspectRatio(var Хk, Yk: Word);

     Примечания: Для  каждого драйвера и графического режима име-
ется связанный  с ним коэффициент относительного удлинения (част-
ное от деления максимального разрешения по y на максимальное раз-
решение  по  x).  Это отношение можно вычислить путем обращения к
процедуре GetAspectRatio и последующего деления параметра  Хk  на
параметр  Yk.  Это отношение используется при вычерчивании окруж-
ностей, дуг и закруглений.

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

     См. также:  Arc,   Circle,   GetMaxX,   GetMaxY,   PieSlice,
SetAspectRatio.

     Пример:

     uses Graph;
     var
      Xasp, Yasp : word;
        GraphDriver, GraphMode : integer;
     begin
        GraphDriver := Detect;
        InitGraph(GraphDriver,GraphMode,'');
        if GraphResult <> grOk then
          Halt(1);
        GetAspectRatio(Xasp,Yasp);
        XSideLength := 20;
        { выровнять длину по Y в соответствии с коэффициентом
          относительного удлинения }
        YSideLength := Round((Xasp/Yasp)*XSideLength);
        { нарисовать на экране "квадратный" прямоугольник }
       Rectangle(0,0,XSideLength,YSideLength);
       Readln;
       CloseGraph;
      end.

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

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

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

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

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

     Если запись  0 палитры была изменена обращением к процедурам
SetPalette или SetAllPalette, то функция GetBkColor будет возвра-
щать значение 0.

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

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

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       Color : word;
     begin
       GraphDriver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if GraphResult <> grOk then
         Halt(1);
       Randomize;
       repeat
       Color := Succ(GetBkColor);
       if Color > PaletteSize then
         Color := 0;
       SetBkColor(Color);
       LineTo(Random(GetMaxX), Random(GetMaxY));
     until False;                 { для выхода нажмите ^Break }
     end.

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

     Назначение: Возвращает состояние Ctrl+Break,  которое прове-
ряется операционной системой DOS.

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

     Описание: procedure GetCBreak(var Break: boolean);

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

     См. также: SetCBreak.

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

     Назначение: Возвращает текущее значение основного цвета, ус-
тановленное   при   предыдущем  успешном  обращении  к  процедуре
SetColor.

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

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

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

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

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

     Пример:

     var
      GraphDriver, GraphMode : integer;
      Color : word;
     begin
      GraphDriver := Detect;
      InitGraph(GraphDriver,GraphMode,'');
      Randomize;
     repeat
        Color := Succ(GetBkColor);
        if Color > PaletteSize then
          Color := 0;
        SetBkColor(Color);
        LineTo(Random(GetMaxX), Random(GetMaxY));
      until False;                 { для выхода нажмите ^Break }
     end.

Функция GetCurDir                                   модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Описание: function   GetCurDir(Dir:   PChar;  Drive:  Byte):
PChar;

     Примечания: Возвращаемая в Dir строка  всегда  начинается  с
буквенной метки диска,  двоеточия и обратной косой черты. Drive =
0 указывает текущий диск, 1 - диск A, 2 - диск B и т.д. Возвраща-
емое значение   записывается  в  Dir.  Об  ошибках  сообщается  в
DosError.

     Если заданный параметром Drive диск  недопустим,  то  в  Dir
возвращается 'X:\', как если бы это был корневой каталог недопус-
тимого диска.

     Максимальная длина полученной в результате строки  определя-
ется константой  fsDirectory.  Текущий  каталог на данном диске в
виде строки Паскаля возвращается функцией GetDir.

     См. также: SetCurDir, CreateDir, RemoveDir.

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

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

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

     Описание: procedure GetDate(var Year, M, Day, D: Word);

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

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

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

     Назначение: Возвращает запись описания палитры.

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

     Описание: function      GetDefaultPalette(var       Palette:
PaletteType): PaletteType;

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

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

     См. также: InitGraph, GetPalette, SetAllPalette, SetPalette.

     Пример:

     uses
      Crt, Graph;
     var
      Driver, Mode,
      i : integer;
      MyPal, OldPal : PletteType;
     begin
       DirectVideo := false;
       Randomize;
       Driver := Detect;   { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
       GetDefultPalette(OldPal); { сохранить старую палитру }
       MyPal := OldPal; { скопировать и изменить }
       { вывести информацию на экран }
       for i = 0 to MyPal.Size - 1 do
       begin
         GetColor(i);
         OutTextXY(10, i * 10, '...нажмите любую клавишу...');
       end;
       repeat      { менять палитру, пока нажата клавиша }
         with MyPl do
           Colors[Random(Size)] := Random(Size + 1);
         SetAllPalette(MyPal);
       until KeyPressed;
       SetAllPalette(OldPal); { восстановить исходную палитру }
       ClearDevice;
       OutTextXY(10, 10, 'Нажмите клавишу Enter...')
       ReadLn;
       CloseGraph;
    end.

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

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

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

     Описание: procedure GetDir(d: Byte; var s: String);

     Примечания: Параметр d представляет собой  выражение  целого
типа, а s - переменную строкового типа. Значение текущего катало-
га на диске, заданного параметром d, возвращается в переменной s.
Значение d = 0 указывает на текущий дисковод, 1 - задает дисковод
A, 2 - В и т.д.

     GetDir не выполняет проверки на ошибки.  Если в параметре  d
задан недопустимый диск,  то в s возвращается 'X:\',  как если бы
это был корневой каталог на недопустимом диске.

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

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

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

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

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

     Описание: function GetDOSEnviroment: PChar;

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

     Пример: В данном примере выводится содержимое текущей опера-
ционной среды задачи.

     uses Strings, WinAPI; { в Windows используйте также WinCrt }
     var
       P: PChar;
     begin
       P: := GetDOSEnviroment;
       while P[0] <> #0 do
       begin
         Whiteln(P);
         Inc(P, StrLen(P) + 1);
       end;
     end.

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

     Назначение: Возвращает строку, содержащую имя текущего драй-
вера.

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

     Описание: function GetDriverName: String;

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

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

     См. также: InitGraph, GetModeName.

     Пример:

     uses Graph;
     var
       Driver, Mode : integer;
     begin
       Driver := Detect;        { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
       OutText('Используется драйвер ' + GetDriverName);
       ReadLn;
       CloseGraph;
     end.

Функция GetEnv                                         модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Описание: function GetEnv(Env: String): String;

     Примечания: Функция GetEnv возвращает значение заданной  пе-
ременной Env. Имя переменной может указываться как строчными, так
и прописными буквами,  но оно не должно включать в себя знак  ра-
венства  (=).  Если заданная переменная операционной среды не су-
ществует, то функция GetEnv возвращает пустую строку.

     Более подробная информация об операционной среде DOS  содер-
жится в справочных руководствах по DOS.

     См. также: EnvCount, EnvStr, GetDOSEnviroment.

     Пример:

     {$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);
       SwapVectors;
       if DosError <> 0 then
          Writeln('Нельзя выполнить COMMAND.COM');
     end.

Функция GetEnvVar                                   модуль WinDos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Описание: function GetEnvVar(Env: String): String;

     Примечания: Функция GetEnvVar возвращает указатель на значе-
ние заданной переменной операционной среды,  например,  указатель
на первый  символ после знака равенства (=) в записи операционной
среды, заданной VarName. Переменная может быть записана в верхнем
или нижнем регистре,  но не должна включать в себя символ равенс-
тва. Если заданная переменная операционной среды  не  существует,
то GetEnvVar возвращает nil.

     Пример:

     uses WinDow;  { в Windows используйте также WinCrt }
     begin
       Writeln('Текущим маршрутом является ', GetEnvVar('PATH'));
     end.

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

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

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

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

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

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

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

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

     Пример:

     uses Dos;
      var
        f : file;
        attr : byte;
      begin
     { получить из командной строки имя файла }
     Assign(f, ParamStr(1));
     GetFAttr(f, attr);
         Writeln(ParamStr(1));
     ifDosError <> 0 then
        Writeln('Код ошибки DOS = ', DosError)
     else
     begin
        Writeln('Атрибут = ', attr);
     { определить тип атрибута файла с помощью флагов в модуле
       Dos }
     if attr and ReadOnly <> 0 then
        Writeln('Файл доступен только по чтению');
     if attr and Hidden <> 0 then
        Writeln('Скрытый файл');
     if attr and SysFile <> 0 then
        Writeln('Системный файл');
     if attr and VolumeId <> 0 then
        Writeln('Идентификатор тома');
     if attr and Directory <> 0 then
        Writeln('Каталог');
     if attr and Archive <> 0 then
        Writeln('Архивизируемый (обычный) файл');
     end; { else }
     end.

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

     Назначение: Возвращает текущий образец заполнителя, заданный
последним обращением к процедуре SetFillPattern.

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

     Описание: procedure       GetFillPattern(var        Pattern:
FillPatternType);

     Примечания: Параметр Pattern - это образец  заполнителя. Тип
FillPatternType описан в модуле Graph. Если пользователь не обра-
щался  к  процедуре  SetFillPattern,  то процедура GetFillPattern
возвратит массив, заполненный $FF.

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

     См. также: SetFillPattern, GetFillSettings, SetFillStyle.

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

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

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

     Описание: procedure          GetFillSetings(var         Inf:
FillSettingsType);

     Примечания: Данная  процедура возвращает переменную Inf (ин-
формация о заполнителе) типа FillSettingsType, который описывает-
ся в модуле Graph.

     Поле Pattern  содержит выбранный в качестве текущего тип за-
полнителя. Поле Color содержит выбранный в качестве текущего цвет
закраски. И образец, и цвет закраски можно изменить путем обраще-
ния к процедурам SetFillStyle и SetFillPattern. Если Pattern рав-
но UserFill, то для получения определенного пользователем образца
закраски используйте GetFillPatrtern.

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

     См. также процедуры FillPoly,  SetFillStyle, SetFillPattern.
!seealso: FillPoly SetFillStyle SetFillPattern

     Пример:

     uses Graph;
     var
        Gd, Gm : integer;
        FillInfo : FillSttingsType;
     begin
      Gd := Detect;
      InitGraph(Gd, Gm, '');
      if GraphResult <> grOk then
         Halt(1);
     GetFillSettings(FillInfo);   { сохранить стиль закраски  и
                                    цвет }
     Bar(0, 0, 50, 50);
     SetFillStyle(XHatchFill, GetMaxColor); { новый стиль }
     Bar(50, 0, 100, 50);
     with FillInfo do
       SetFillStyle(Pattern, Color); { восстановить старый цвет
                                       закраски }
     Bar(100, 0, 150, 50);
     Readln;
     CloseGraph;
     end.


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

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

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

     Описание: procedure GetFreeSpace(Flag: Word): Longint;

     Примечание: Переменная Flag игнорируется и должна быть равна
0. Она  существует  только  для  совместимости с реальным режимом
Windows. Возвращается значение объема свободной памяти в  байтах.
Из-за фрагментации  маловероятно,  чтобы можно было выделить блок
такого размера. Чтобы найти размер наибольшего непрерывного блока
памяти, вызовите подпрограмму GlobalCompact.

     См. также: GlobalCompact, GlobalAlloc.

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

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

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

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

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

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

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

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

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

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

     Описание: function GetGraphMode: Integer;

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


     Определены следующие константы режима:

ЪДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДДДДВДДДДДДДї
іГрафическийі   Имя   іЗначениеі  Столбцов і  Палитра   іСтраниці
і драйвер   іконстантыі        і   х строк і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і CGA       і CGAC0   і     0  і   320x200 і    C0      і    1  і
і           і CGAC1   і     1  і   320x200 і    C1      і    1  і
і           і CGAC2   і     2  і   320x200 і    C2      і    1  і
і           і CGAC3   і     3  і   320x200 і    C3      і    1  і
і           і CGAHi   і     4  і   640x200 і 2 цвета    і    1  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і MCGA      і MCGAC0  і     0  і   320x200 і    C0      і    1  і
і           і MCGAC1  і     1  і   320x200 і    C1      і    1  і
і           і MCGAC2  і     2  і   320x200 і    C2      і    1  і
і           і MCGAC3  і     3  і   320x200 і    C3      і    1  і
і           і MCGAMed і     4  і   640x200 і 2 цвета    і    1  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і EGA       і EGALo   і     0  і   640x200 і 16 цветов  і    1  і
і           і EGAHi   і     1  і   640x350 і 16 цветов  і    2  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і EGA64     і EGA64Lo і     0  і   640x200 і 16 цветов  і    1  і
і           і EGA64Hi і     1  і   640x350 і  4 цвета   і    1  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і EGA-      і EGAMonoHі     3  і   640x350 і  2 цвета   і    1* і
і MONO      і EGAMonoHі     3  і   640x350 і  2 цвета   і   1** і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і HERC      і HercMonoіi    0  і   720x348 і  2 цвета   і    2  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і ATT400    і ATT400C0і     0  і   320x200 і     C0     і    1  і
і           і ATT400C1і     1  і   320x200 і     C1     і    1  і
і           і ATT400C2і     2  і   320x200 і     C2     і    1  і
і           і ATT400C3і     3  і   320x200 і     C3     і    1  і
і           і ATT400Meі     4  і   640x200 і   2 цвета  і    1  і
і           і ATT400Hiі     5  і   640x200 і   2 цвета  і    1  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і VGA       і VGALo   і     0  і   640x200 і  16 цветов і    2  і
і           і VGAMed  і     1  і   640x350 і  16 цветов і    2  і
і           і VGAHi   і     2  і   640x480 і  16 цветов і    1  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і PC3270    і PC3270Hiі     0  і   640x200 і   2 цвета  і    1  і
і           і         і        і           і            і       і
ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ
і 8514      і IBM8514Lі     0  і   640x480 і  256 цветові    1  і
і 8514      і IBM8514Hі     0  і  1024x768 і  256 цветові    1  і
і           і         і        і           і            і       і
АДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДДДДБДДДДДДДЩ
   * - 64К на плате EGAMono
   ** - 256К на плате EGAMomo

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

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

     Пример:

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

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

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

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

     Описание: procedure GetImage(х1,  у1,  х2,  у2: Integer; var
BitMap);

     Примечания: Параметры х1,  у1, х2, у2 определяют прямоуголь-
ную область экрана. Параметр BArray (битовый массив) является не-
типизированным параметром,  который  должен быть больше или равен
4,  плюс размер памяти, отведенный для области экрана. Первые два
слова параметра BitMap используются для хранения ширины и  высоты
области экрана; третье слово свободное.

     Оставшаяся часть  параметра BitMap используется для сохране-
ния самого двоичного образа.  Для определения размера памяти, не-
обходимой для параметра BitMap, используйте функцию ImageSize.

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

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

     Пример:

     var
       P    : pointer;
       Size : word;
       Gd, Gm : pointer;
      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^);
      Readln;
      ClearDevice;
      PutImage(100, 100, P^, NormalPut);
      Readln;
      CloseGraph;
     end.

Процедура GetImage                                   модуль Graph
     Назначение: Сохраняет в буфере двоичный образ  заданной  об-
ласти экрана.

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

     Описание: procedure GetImage(х1,  у1,  х2,  у2: Integer; var
BitMap);

     Примечания: Параметры х1,  у1, х2, у2 определяют прямоуголь-
ную область экрана. Параметр BArray (битовый массив) является не-
типизированным параметром,  который  должен быть больше или равен
4,  плюс размер памяти, отведенный для области экрана. Первые два
слова параметра BitMap используются для хранения ширины и  высоты
области экрана; третье слово свободное.

     Оставшаяся часть  параметра BitMap используется для сохране-
ния самого двоичного образа.  Для определения размера памяти, не-
обходимой для параметра BitMap, используйте функцию ImageSize.

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

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

     Пример:

     var
       P    : pointer;
       Size : word;
       Gd, Gm : pointer;
      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^);
      Readln;
      ClearDevice;
      PutImage(100, 100, P^, NormalPut);
      Readln;
      CloseGraph;
     end.



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

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

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

     Описание: procedure GetIntVec(Int: Byte; var Vec: Pointer);

     Примечания: Параметр Int задает номер вектора прерывания (от
0 до 255), а его адрес возвращается в параметре Vec.

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

     См. также: SetIntVec.

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

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

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

     Описание: procedure      GetLineSettings(var       LineInfo:
LineSettingsType);

     Примечания: См. описание типа LineSettingType.

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

     См. также: SetLineStyle.

     Пример:

     var
       GraphDriver, GraphMode : integer;
       OldStyle: LineSettingsType;
     begin
       GraphDiver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if Graphesult <> grOk then
          Halt(1);
      Line(0, 0, 100, 0);
      GetLineSettings(OldStyle);
      SetLineSettings(DottesLn, 0, ThickWidth);
      Line(0, 10, 100, 10);
      with OldStyle do        { восстановить старый стиль линии }
         SetLineStyle(LineStyle, Pattern, Thickness);
      Line(0, 20, 100, 20);
      Readln;
      CloseGraph;
     end.

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

     Назначение: Возвращает наибольшее  значение  цвета,  которое
можно передать процедуре SetColor.

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

     Описание: procedure GetMaxColor: Word;

     Примечания: Например,  при использовании адаптера EGA с 256К
процедура GetMaxColor всегда возвращает значение 15.  Это означа-
ет, что допускается любое обращение к процедуре SetColor со  зна-
чением от 0 до 15.  При использовании адаптера CGA в режиме с вы-
соким разрешением или монохромного адаптера  Hercules,  поскольку
эти  адаптеры  поддерживают только значения основного цвета 0 или
1, процедура GetMaxColor возвращает значение 1.

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

     См. также: SetColor.

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

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

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

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

     Примечания: Данная функция позволяет вам  непосредственно из
драйвера найти для текущего драйвера максимальное значение номера
режима.  (Ранее единственный способ,  с помощью которого вы могли
получить   это   значение,   состоял  в  использовании  процедуры
GetModeRange. Теперь эта процедура также поддерживается, но толь-
ко для драйверов фирмы Borland.) Значение,  возвращаемое функцией
GetMaxMode,  представляет собой  максимальное  значение,  которое
можно передать процедуре SetGraphMode.  В каждом драйвере поддер-
живаются режимы 0..GetMaxMode.

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

     См. также: GetModeRange, SetGraphMode.

     Пример:

     uses
       Graph;
     var
       Driver, Mode : integer;
       i : integer;

     begin
       Driver := Detect;  { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
       for i := 0 to GetMaxMode do { вывести на экран все
                                     названия режимов }
         OutTextXY(10, 10 * Succ(i), GetModeName(i));
       Readln;
       CloseGraph;
     end.

Функция GetMахХ                                      модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

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

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

     Описание: function GetMaxX: Integer;

     Примечания: Возвращает для текущего  графического  режима  и
драйвера максимальное значение х. В режиме 320х200 CGA, например,
данная процедура будет возвращать значение 319.

     GetМахХ и GetМахY чрезвычайно полезны для центрирования, оп-
ределения границ области экрана и т.д.

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

     См. также: GetMaxY, GetX, GetY, MoveTo.

     Пример:

     uses
       Graph;
     var
       Driver, Mode : integer;
       i : integer;
     begin
       Driver := Detect;  { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
     Rectangle(0,0,GetMaxX,GetMexY);  { нарисовать полную рамку
                                       экрана }
       Readln;
       CloseGraph;
     end.

Функция GetМахY                                      модуль Graph
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Возвращает  для  текущего  графического режима и
драйвера самую нижнюю строку (разрешение по y).

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

     Описание: function GetMaxY: Integer;

     Примечания: Возвращает для текущего  графического  режима  и
драйвера максимальное значение y. В режиме 320х200 CGA, например,
данная процедура будет возвращать значение 199.

     Процедуры GetМахХ  и GetМахY чрезвычайно полезны для центри-
рования, определения границ области экрана и т.д.

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

     См. также: GetMaxX, GetX, GetY, MoveTo.

     Пример:

     uses
       Graph;
     var
       Driver, Mode : integer;
       i : integer;
     begin
       Driver := Detect;  { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
     Rectangle(0,0,GetMaxX,GetMexY);  { нарисовать полную рамку
                                       экрана }
       Readln;
       CloseGraph;
     end.

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

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

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

     Описание: procedure GetMem(var p: Pоinter; Size: Word);

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

     Если для выделения памяти под новую  динамическую переменную
в динамически распределяемой области недостаточно свободной памя-
ти,  то во время выполнения программы  происходит  ошибка.  (Этой
ошибки можно избежать - см.  раздел "Функция обработки ошибки ди-
намически распределяемой области памяти" в Главе 21  "Руководства
по языку".)

     Ограничения: Наибольший блок,  который может быть выделен  в
динамически распределяемой области памяти,  составляет 65521 байт
(64К - $8).

     См. также: New, FreeMem.

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

     Назначение: Возвращает строку, содержащую имя заданного гра-
фического режима Mode.

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

     Описание: function GetModeName(Mode: Integer): String;

     Примечания: Имена режимов встроены в каждый драйвер. Возвра-
щаемые  значения  (320х200 CGA P1,  640х200 CGA и т.д.) можно ис-
пользовать для создания меню, вывода режимов экрана и т.д.

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

     См. также: GetMaxMode, GetModeRange, GetDriverName.

     Пример:

     uses
       Graph;
     var
       Driver, Mode : integer;
       i : integer;
     begin
       Driver := Detect;        { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
     for i := 0 to GetMaxMode do    { вывести все имена режимов }
         OutText(10, 10 * Succ(i), GetModeName(i));
       Readln;
       CloseGraph;
     end.














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

     Назначение: Для данного драйвера возвращает наименьший и на-
ибольший графический режим.

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

     Описание: procedure GetModeRange(GraphDriver:  Integer;  var
LoMode, HiMode: Integer);

     Примечания: Вывод следующей программы:

     uses Graph;
     var
       Lovest, Highest : integer;
     begin
       GetModeRange(EGA64, Lowest, Highest);
       Write('Наименьшее значение = ', Lowest);
       Write('Наибольшее значение = ', Highest);
     end.

даст наименьшее значение = 0 и наибольшее значение = 1. Если зна-
чение GraphDriver является недопустимым, то LoMode и HiMode будут
равны -1.

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

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

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

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

     Описание: function     GetModuleFileName(Module:    THandle;
FileName: PChar; Size: Integer): Integer;

     Примечания: Данная функция возвращает полностью  расширенное
имя выполняемого  файла  модуля,  из которого был загружен данный
модуль. Параметр Module - это описатель экземпляра модуля,  полу-
чаемый обычно из переменной HInstance в модуле System или создан-
ный LoadLibrary.  Параметры FileName и Size задают адрес и размер
буфера, в который копируется строка с завершающим нулем.  Возвра-
щаемое значение равно фактической  длине  скопированной  в  буфер
строки.

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

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

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

     Описание: function  GetModuleHandleName(ModuleName:  PChar):
THandle;

     Примечания: Параметр ModuleName задает имя модуля. Строка не
может быть именем файла. Другими словами, она не может  содержать
маршрута или расширения. Возвращаемое значение представляет собой
описатель заданного модуля или 0,  если в данный момент такой мо-
дуль не загружен.

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

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

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

     Описание: function GetModuleUsage(Module: THandle): Integer;

     Примечания: Параметр Module - это строка экземпляра  модуля,
получаемая обычно  из переменной HInstance модуля System или соз-
даваемая LoadLibrary. Возвращаемое значение специфицирует счетчик
ссылок на модуль.

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

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

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

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

     Примечания: Возвращает в переменной типа PaletteType текущую
палитру и ее размер. Тип PaletteType описан в модуле Graph.

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

     См. также:    SetPalette,   SetAllPalette,   GetPaletteSize,
GetDefaultPalette.

     Пример:

     uses
       Graph;
     var
       Driver, Mode : integer;
       i : integer;
     begin
       Driver := Detect;       { перевести в графический режим }
       InitGraph(Driver, Mode, '');
       if GraphResult < 0 then
          Halt(1);
       GetPalette(Palette);
       If Palette.Size <> 1 then
     for i := 0 to Pred(Palette.Size) do
     begin
       SetColor(Color);
       Line(o, Color*5, 100, Color*5);
       end
       else
         Line(0, 0, 100, 0);
       Readln;
       CloseGraph;
       end.






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

     Назначение: Возвращает размер таблицы палитры цветов.

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

     Описание: function GetPaletteSize: Integer;

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

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

     См. также:   GetMaxColor,   GetDefaultPalette,   GetPalette,
SetPalette.

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

     Назначение: Получает значение элемента изображения  в  точке
Х,Y.

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

     Описание: function GetPixel(X, Y: Integer): Word;

     Примечания: Получает цвет элемента изображения в точке Х,Y.

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

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

     Пример:

     uses
       Graph;
     var
       Gd, Gm : integer;
       PixelColor: word;
     begin
       Gd := Detect;            { перевести в графический режим }
       InitGraph(Gd, Gm, '');
       if GraphResult < 0 then
          Halt(1);
       PixelColor := GetPixel(10, 10);
       if PixelColor = 0 then
       PutPixel(10, 10, GetMaxColor);
       Readln;
       CloseGraph;
     end.

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

     Назначение: Находит адрес экспортируемой процедуры или функ-
ции.

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

     Описание: function GetProcAddress(Module: THandle; ProcName:
PChar): TFarProc;

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

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

     Ограничения: GertProcAddress следует использовать только для
поиска адресов экспортируемых процедур и  функций,  принадлежащих
DLL.

     Пример: Следующая  библиотека экспортирует одну функцию Test
по порядковому значению 5.

     library Lib;

     function Test: PChar; export;
     begin
       Test := 'Это тест';
     end;

     exports Test index 5;

     begin
     end.

     Следующая программа динамически импортирует функцию Test  из
указанной выше библиотеки.  Функция  GetProcAddress  используется
для  просмотра экспортируемой функции по имени и порядковому зна-
чению:

     uses WinAPI;    { под Windows используйте также WinCrt }

       L: THandle;
       Test: function: PChar;
     begin
       L := LoadLibrary('LIB.DLL');
       if L >= 32 then
       begin
          @Test := GetProcAddress(L, 'TEXT'); { поиск по имени }
          if @Test <> nil then WriteLn(Test); { если найдена,
                                                вызвать ее }
          @Test := GetProcAddress(L, PChar(5)); { поиск по
                                          порядковому значению }
          if @Test <> nil then WriteLn(Test); { если найдена,
                                                вызвать ее }
          FreeLibrary(L);
       end;
     end.

     См. также: LoadLibrary.

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

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

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

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

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

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

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

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

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

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

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

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

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

     Назначение: Возвращает текущий тип  текстового  шрифта,  его
направление,  размер и выравнивание, установленные с помощью про-
цедур SetTextStyle и SetTextJustify.

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

     Описание: procedure       GetTextSettings(var      TextInfo:
TextSettingsType);

     Примечания: См. в данной главе определение констант шрифта и
описание типа TextSettingType.

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

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

     Пример:

     uses
       Graph;
     var
       Gd, Gm : integer;
       OldStyle : TextSettingsType;
     begin
       Gd := Detect;          { перевести в графический режим }
       InitGraph(Gd, Gm, '');
       if GraphResult < 0 then
          Halt(1);
     GetTextSettings(OldStyle);
     SetTextJustify(LeftText, CenterText);
     SetTextStyle(TriplexFont, VertDir, 4);
     OutTextXY(GetMaxX, div 2, GetMaxY div 2, 'Новый тип');
     with OldStyle do
     begin                    { восстановить старый тип текста }
       SetTextJustify(Horiz, Vert);
       SetTextStyle(Font, Direction, CharSize);
     end;
     OutTextXY(0, TextHeight('H'), 'Снова старый тип');
     Readln;
     CloseGraph;
    end.




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

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

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

     Описание: procedure GetTime(var hour, min, sec, ssec: Word);

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

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

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

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

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

     Описание: procedure GetVerify(var Flag: Boolean);

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

     См. также: SetVerify.

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

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

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

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

     Примечания: Младшее слово  возвращаемого  значения  содержит
версию Windows.  Старший байт задает вспомогательный номер версии
(в виде двузначного десятичного номера),  например, в Windows 3.1
младшим номером будет 10. Младший байт задает основной номер вер-
сии.

     Старшее слово  возвращаемого  значения содержит номер версии
DOS. Старший байт задает основной номер версии (в виде двузначно-
го десятичного номера). Мдалший байт задает вспомогательный номер
версии.

     Пример:

     uses WinAPI;      { под Windows используйте также WinCrt }
     type
        TVersion = record
        WinMajor, WinMinor, DosMinor, DosMajor: Byte;
     end;
     var
        Version: Longint;
     begin
        Version := GetVersion;
        with TVersion(Version) do
        begin
           Writeln('Версия Windows ', WinMajor, '.', WinMinor);
           Writeln('DOS version ', DosMajor, '.', DosMinor);
        end;
     end.

     См. также: DosVersion.


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

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

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

     Описание: procedure      GetViewSettings(var       ViewPort:
ViewPortType);

     Примечания: Данная   процедура  возвращает  переменную  типа
ViewPortType. Этот  тип описан в модуле Graph (см.  выше описание
записи ViewPortType).

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

     См. также: SetViewPort, ViewPortType, ClearViewPort.

     Пример:

     uses
       Graph;
     var
       Gd, Gm : integer;
      ViewPortType = ViewPortType;
     begin
       Gd := Detect;       { перевести в графический режим }
       InitGraph(Gd, Gm, '');
       if GraphResult < 0 then
          Halt(1);
       GetViewSettings(ViePort);
       with ViewPort do
       begin
         Rectangle(0, 0, x2 - x1, y2 - y1);
         if Clip then
            OutText('Отсечение изображения не активно');
         else
         OutText('Сегодня отсечение изображения не действует');
        end;
        Readln;
        CloseGraph;
     end.

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

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

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

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

     Примечания: Информацию о памяти и  конфигурации  системы  вы
можете получить с помощью флагов wf_XXXX, проверяя биты возвраща-
емого GetWinFlags  значения.  См.  описание  флагов  конфигурации
fw_XXXX. В защищенном режиме DOS флаги wf_Standard, wf_Enchanced,
wf_LargeFrame и wf_SmallFrame всегда равны нулю.

     Флаг fw_DPMI может использоваться для определения того,  ра-
ботают ли прикладная программа или библиотека под Windows или DOS
в защищенном режиме.

     Пример:

     uses WinAPI;
     begin
       .
       .
       .
       if GetWinFlags and wf_DPMI <> 0 then
           { работает в защищенном режиме DOS }
       else
           { работает в под Windows }
         .
         .
         .
     end;

     См. также: Флаги конфигурации wf_XXXX.

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

     Назначение: Возвращает Х-координату текущего указателя.

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

     Описание: function GetX: Integer;

     Примечания: Процедура GetХ зависит от области просмотра. Та-
ким образом, ее значение всегда равно абсолютной Х-координате те-
кущего указателя, минус ViewPort.х1. В следующем примере:

     1. SetViewPort(0, 0, GetMaxX, GetMaxY, True);
        Перемещает текущий указатель в точку с абсолютными  коор-
        динатами (0,0), а GetX возвращает значение 0.

     2. MoveTo(5, 5);
        Перемещает текущий указатель в точку с абсолютными  коор-
        динатами (5,5), а GetX возвращает значение 5.

     3. SetViewPort(10, 10, 100, 100, True);
        Перемещает текущий  указатель в точку с абсолютными коор-
        динатами (10,10), а GetX возвращает значение 0.

     4. MoveTo(5, 5);
        Перемещает текущий указатель в точку с абсолютными  коор-
        динатами (15,15), а GetX возвращает значение 5.

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

     См. также:  процедуры  GetViewSettings,   GetY,   InitGraph,
MoveTo, SetViewPort.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       x, y : integer;
     begin
       GraphDiver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if Graphesult <> grOk then
          Halt(1);
       OutText('Начнем здесь.');
       x := GetX;
       y := GetY;
       OutText(20,10,'Теперь перейдем сюда...');
       OutText(x,y,'А теперь вернемся назад.');
       Readln;
       CloseGraph;
     end.

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

     Назначение: Возвращает Y-координату текущего указателя.

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

     Описание: function GetY: Integer;

     Примечания: Процедура GetY зависит от области просмотра. Та-
ким образом, ее значение всегда равно абсолютной Y-координате те-
кущего указателя. См. пример предыдущей функции.

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

     См. также:   GetViewSettings,   GetX,   InitGraph,   MoveTo,
SetViewPort.

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       x, y : integer;
     begin
       GraphDiver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if Graphesult <> grOk then
          Halt(1);
       OutText('Начнем здесь.');
       x := GetX;
       y := GetY;
       OutText(20,10,'Теперь перейдем сюда...');
       OutText(x,y,'А теперь вернемся назад.');
       Readln;
       CloseGraph;
     end.

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

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

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

     Описание: function GlobalAlloc(Flags: Word; Bytes: Longint):
THandle;

     Примечания: GlobalAlloc  распределяет  блок  с  атрибутами и
размером, заданными параметрами Flags и Bytes,  и возвращает опи-
сатель блока. Если блок выделить нельзя, то возвращаемое значение
равно 0.

     Администраторы памяти Windows и защищенного режима DOS  под-
держивают следующие  типы  блоков памяти:  фиксированный (fixed),
перемещаемый (moveable) и выгружаемый (discardable).  Фиксирован-
ный блок  гарантированно остается в одном и том же месте линейной
памяти. Перемещаемый блок может перемещаться в линейной памяти  и
освобождать место  для других запросов,  а выгружаемый блок может
выгружаться из памяти,  чтобы освободить место для других блоков.
С помощью параметра Flags вы можете выбрать один из трех типов:

     ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
     і      Тип        і        Флаги                     і
     ГДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
     і Фиксированный   і gmem_Fixed                       і
     і Перемещаемый    і gmem_Moveable                    і
     і Выгружаемый     і gmem_Moveable + gmem_Discardable і
     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Кроме того, флаги gmem_ZeroInit и gmem_Norify поддерживаются
как в Windows,  так и в защищенном режиме DOS.  Все другие  флаги
памяти gmem_XXXX в защищенном режиме DOS игнорируются. Если задан
флаг gmem_ZeroInit,  то блок будет заполняться нулями. Для выгру-
жаемого блока задан флаг gmem_Notify, то при выгрузке блока вызы-
вается процедура уведомления прикладной программы.

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

     Перед тем как обращаться к блоку памяти вы можете заблокиро-
вать его  с помощью функции GlobalLock,  а когда закончите к нему
обращаться, то  нужно  разблокировать  его  с   помощью   функции
GlobalUnlock. GlobalLock  возвращает  полный 32-битовый указатель
на первый байт в блоке.  Смещение указателя всегда равно нулю.  В
защищенном режиме  DOS селектор указателя всегда совпадает с опи-
сателем блока, но в Windows это не всегда так.

     Чтобы освободить блок памяти,  прикладная  программа  должна
использовать функцию GlobalFree.  Чтобы изменить размер или атри-
буты выделенного блока памяти, прикладная программа может исполь-
зовать функцию GlobalReAlloc.

     В Windows наибольший блок памяти,  который вы можете распре-
делить на процессоре 80286, на 1 мегабайт меньше 16. На процессо-
ре 80386 это на 64К меньше 12мегабайт.

     В защищенном режиме DOS наибольший распределяемый блок равен
16 мегабайтам.  Заметим, что администратор памяти защищенного ре-
жима транслирует запросы на большие (> 64К) выгружаемые и переме-
щаемые блоки.

     См. также:    GlobalFree,     GlobalLock,     GlobalReAlloc,
GlobalSize, GlobalUnlock, флаги памяти gmem_XXXX.



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

     Назначение: Выделяет и блокирует блок памяти.

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

     Описание: function   GlobalAllocPrt(Flags:   Word;    Bytes:
Longint): THandle;

     Примечания: Эта функция комбинирует в одной операции функции
GlobalAlloc и GlobalLock. Реализация GlobalAllocPrt соответствует
функции, показанной ниже:

     function GlobalAlloc(Flags: Word; Bytes: Longint): THandle;
     begin
        GlobalAllocPtr := GlobalLock(GlobalAloc(Flags, Bytes));
     end;

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

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

     См. также: GlobalFreePrt, GlobalPrtHandle, GlobalReAllocPrt.

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

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

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

     Описание: function GlobalCompact(MinFree: Longint): Longint;

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

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

     Ограничения: Если ваша прикладная программа передает возвра-
щаемое GlobalCompact значение функции GlobalAlloc,  то не исполь-
зуйте gmem_NoCompact или gmem_NoDiscard.

     См. также: флаги памяти gmem_XXXX, GlobalAlloc.

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

     Назначение: Выгружает блок глобальной памяти.

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

     Описание: function   GlobalDiscard(Mem: THandle): THandle;

     Примечания: Эта функция выгружает блок памяти,  заданный па-
раметром Mem.  Блок  памяти должен быть выгружаемым (выделяться с
флагом gmem_Discardable),  а счетчик блокировки для  него  должен
быть равен 0.

     Хотя GlobalDiscard удаляет блок глобальной памяти из памяти,
его описатель остается допустимым. Прикладная программа может пе-
редать описатель функции GlobalReAlloc для выделения другого бло-
ка памяти, идентифицированного тем же описателем.

     См. также: GlobalReAlloc, флаги памяти gmem_XXXX.

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

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

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

     Описание: function GlobalDosAlloc(Bytes: Longint): Longint;

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

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

     Ограничения: Поскольку памяти для распределения объекта нем-
ного, в  прикладной  программе  следует  использовать эту функцию
только в случае крайней необходимости.

     См. также: GlobalDosFree.

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

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

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

     Описание: function GlobalDosFree(Selector: Word): Word;

     Примечания: Эта функция освобождает блок глобальной  памяти,
выделенный ранее   с  помощью  функции  GlobalDosAlloc.  Параметр
Selector определяет селектор для блока, соответствующего младшему
слову значения, возвращаемого GlobalDOSAlloc. Возвращаемое значе-
ние  равно 0 в случае успешного выполнения и Selector в противном
случае.

     См. также: GlobalDoaAlloc.

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

     Назначение: Блокирует блок памяти.

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

     Описание: procedure GlobalFix(Mem: THandle);

     Примечания: Эта процедура блокирует в линейной памяти  блок,
заданный параметром  Mem,  и  увеличивает на 1 счетчик блокировки
блока. Блок остается заблокированным (зафиксированным в  памяти),
пока счетчик блокировки через вызов GlobalUnfix не уменьшается до
нуля.

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

     См. также: GlobalUnfix.

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

     Назначение: Возвращает информацию о блоке памяти.

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

     Описание: function GlobalDosFree(Mem: THandle): Word;

     Примечания: Старший байт возвращаемого значения  содержит  0
или более следующих установленных флагов:

ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і      Константа     і                Описание                  і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і   gmem_DDEShare    і Блок может использоваться совместно. При-і
і                    і меняет  только  для  динамического обменаі
і                    і данными (DDE).                           і
і                    і                                          і
і   gmem_Discardable і Блок может быть выгружаемым.             і
і                    і                                          і
і   gmem_Discarded   і Блок был выгружен.                       і
і                    і                                          і
і   gmem_Not_Banked  і Блок не может быть банкируемым.          і
АДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     Младший байт возвращаемого значения содержит счетчик  блоки-
ровки блока. Для получения значения счетчика блокировки вы можете
использовать gmem_LockCount.

     Ограничения: На счетчик блокировки блока  глобальной  памяти
влияют следующие функции:

        ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДї
        і    Увеличивают счетчик  і Уменьшают счетчик  і
        ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДґ
        і    GlobalFix            і GlobalUnfix        і
        і    GlobalLock           і GlobalUnlock       і
        і    LockSegment          і UnlockSegment      і
        АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДЩ

     См. также: флаги памяти gmem_XXXX, GlobalSize.

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

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

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

     Описание: function GlobalFree(Mem: THandle): THandle;

     Примечания: GlobalFree освобождает блок памяти, заданный па-
раметром Mem  и делает недопустимым описатель блока памяти.  Если
функция выполняется успешно,  то возвращается нулевое значение. В
противном случае возвращается значение,  равное Mem.  Если объект
памяти заблокирован, то есть имеет счетчик блокировки, больший 0,
то GlobalFree не может использоваться для освобождения объекта.

     Ограничения: Использование  описателя  объекта освобождаемой
памяти может вызвать общий сбой по нарушению защиты памяти.

     См. также:    GlobalDiscard,    GlobalFlags,     GlobalLock.
GlobalUnlock.

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

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

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

     Описание: function GlobalFreePtr(P: Pointer): THandle;

     Примечания: Данная  функция  комбинирует  в  одной  операции
функции GlobalUnlock    и    GlobalFree.    Реализация    функции
GlobalFreePrt соответствует показанной ниже функции:

     function GlobalFreePrt(P: Pointer): THandle;
     var
       H: THandle;
     begin
       H := GlobalPtrHandle(P);
       GlobalUnock(H);
       GlobalFreePtr := GlobalFree(H);
     end;

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

     См. также:          GlobalAllocPrt,         GlobalPtrHandle,
GlobalReAllocPtr.


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

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

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

     Описание: function GlobalHandle(Mem: Word): Longint;

     Примечания: Данная  функция возвращает описатель блока памя-
ти, селектор которого задается параметром Mem. Младшее поле возв-
ращаемого значения содержит описатель блока, а старшее - селектор
блока. Если Mem не идентифицирует блок  памяти,  то  возвращаемое
значение равно 0.

     См, также: GlobalPtrHandle.

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

     Назначение: Блокирует блок памяти.

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

     Описание: function GlobalLock(Mem: THAndle): Pointer;

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

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

     См. также: GlobalSize, GlobalHandle, GlobalUnlock.

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

     Назначение: Перемещает блок памяти в самую "новую" последнюю
используемую позицию в памяти (LRU).

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

     Описание: function GlobalLRUNewest(Mem: THAndle): THandle;

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

     Ограничения: GlobalLRUNewest полезно использовать  только  в
том случае, если Mem - это выгружаемый объект.

     См. также: GlobalLRUOldest.

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

     Назначение: Перемещает блок памяти в самую "старую"  послед-
нюю используемую позицию в памяти (LRU).

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

     Описание: function GlobalLRUOldest(Mem: THAndle): THandle;

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

     Ограничения: GlobalLRUNewest полезно использовать  только  в
том случае, если Mem - это выгружаемый объект.

     См. также: GlobalLRUNewest.

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

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

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

     Описание: function GlobalNotify(NotifyProc: TFarProc);

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

     Параметр NotifyProc должен быть адресом  функции  вызова  со
следующим описанием:

     function Notify(Mem: THAndle): Bool; export

где Notify  можете  быть любым определенным пользователем именем.
Заметим, что функция должна описываться с директивой export и на-
ходиться в  фиксированном сегменте кода.  Кроме того,  в Windows,
если функция уведомления находится в прикладной программе (в  от-
личие от  DLL),  передаваемый  GlobalNotify  указатель NotifyProc
должен создаваться с помощью MakeProcInstance.

     Когда администратор памяти вызывает функцию  уведомления,  в
параметр Mem  он  передает  описатель блока,  который должен быть
выгружен. Если функция уведомления возвращает значение  True,  то
администратор памяти  выгружает блок.  Если возвращается значение
False, то блок не выгружается.

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

     См. также: GlobalReAlloc, флаги памяти gmem_XXXX.

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

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

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

     Описание: function GlobalPageLock(Selector: THandle): Word;

     Примечания: Данная функция увеличивает для блока памяти, за-
данного параметром Selector, счетчик блокировки страницы. В улуч-
шенном режиме Windows пока счетчик блокировки страницы имеет  не-
нулевое значение,  блок не будет выгружаться на диск и остается в
памяти по одному и тому же физическому адресу. Блок остается заб-
локированным,  пока счетчик блокировки страницы с помощью вызовов
GlobalPageUnlock не станет равным нулю.

     Ограничения: Эта функция имеет смысл только в улучшенном ре-
жиме Windows.  В защищенном режиме DOS функции GlobalPageLock со-
ответствует функция GlobalFix.

     См. также: GlobalPageUnlock.

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

     Назначение: Уменьшает  для  блока  памяти счетчик блокировки
страницы.

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

     Описание: function   GlobalPageUnLock(Selector:    THandle):
Word;

     Примечания: Данная  функция уменьшает для блока памяти,  за-
данного параметром Selector,  счетчик блокировки  страницы.  Блок
должен быть  ранее заблокирован с помощью функции GlobalPageLock.
В улучшенном режиме Windows пока счетчик блокировки страницы име-
ет ненулевое значение,  блок не будет выгружаться на диск и оста-
ется в памяти по одному и тому же физическому  адресу  в  памяти.
Блок остается заблокированным, пока счетчик блокировки страницы с
помощью вызовов GlobalPageUnlock не станет равным нулю. Возвраща-
емое значение  определяет  полученный в результате счетчик блоки-
ровки. Если функция выполняется неуспешно, то результирующее зна-
чение будет нулевым.

     Ограничения: Эта функция имеет смысл только в улучшенном ре-
жиме Windows.  В защищенном режиме DOS  функции  GlobalPageUnLock
соответствует функция GlobalUnFix.

     См. также: GlobalPageLock.

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

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

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

     Описание: function GlobalPtrHandle(P: Pointer): THandle;

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

     См. также: GlobalAllocPrt, GlobalFreePrt, GlobalReAllocPtr.

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

     Назначение: Изменяет размер или атрибуты блока памяти.

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

     Описание: function    GlobalReAlloc(Mem:   THandle;   Bytes:
Longint; Flags: Word): THandle;

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

     Если для фиксированного блока в параметре  Flags  установлен
флаг gmem_Moveable,  то блок можно перемещать в новый фиксирован-
ный адрес.

     Если для выгружаемого блока  в  параметре  Flags  установлен
флаг gmem_Moveable,  а  параметр Bytes равен 0,  блок при нулевом
значении счетчика блокировки выгружается.

     Если при увеличении размера блока в параметре Flags установ-
лен флаг gmem_ZeroInit, дополнительное содержимое инициализирует-
ся нулем.

     В GlobalReAlloc Windows  поддерживает  дополнительные  флаги
памяти gmem_XXXX, но в защищенном режиме DOS они игнорируются.

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

     Функцию GlobalReAlloc можно также использовать для изменения
атрибутов блока памяти.  Это можно сделать, установив в параметре
Flags наряду с комбинацией gmem_Moveable и gmem_Discardable  флаг
gmem_Modify. Флаг  gmem_Modify приводит к игнорированию параметра
Bytes.

     См. также:   GlobalDiscard,    флаги    памяти    gmem_XXXX,
GlobalAlloc.



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

     Назначение: Изменяет размер или атрибуты блока памяти.

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

     Описание: function   GlobalReAllocPtr(P:   Pointer;   Bytes:
Longint; Flags: Word): Pointer;

     Примечания: Данная  функция  комбинирует  в  одной  операции
функции GlobalUnlock,  GlobalReAlloc  и  GlobalLock.   Реализация
функции GlobalReAllocPtr соответствует показанной ниже функции:

     function GlobalReAllocPtr(P: Pointer; Bytes: Longint; Flags:
                               Word): Pointer;
     var
       H: THandle;
     begin
       H: := GlobalPtrHandle(P);
       GlobalUnlock(H);
       GlobalReAllocPtr := GlobalLock(GlobalReAllock(H, Bytes,
                                      Flags));
     end;

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

     См. также: GlobalFreePrt, GlobalAllocPrt, GlobalReAllocPrt.

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

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

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

     Описание: function GlobalSize(Mem: THandle): Longint;

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

     См. также: GlobalFlags.

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

     Назначение: Разблокирует блок памяти.

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

     Описание: function GlobalUnfix(Mem: THandle): Bool;

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

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

     См. также: GlobalFix, GlobalFlags.

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

     Назначение: Разблокирует блок памяти.

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

     Описание: function GlobalUnlock(Mem: THandle): Bool;

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

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

     См. также: GlobalLock, GlobalFlags.

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

     Назначение: Позиционирует курсор в точку с заданными коорди-
натами.

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

     Описание: procvedure GoToXY(X, Y: Byte);

     Примечания: Курсор перемещается в ту позицию внутри текущего
окна,  которая задана координатами Х и Y (Х задает столбец, Y за-
дает строку). Верхний левый угол задается координатами (1,1).

     Эта процедура зависит от текущего окна. Например:

     Window(1,10,60,20);
     GotoXY(1,1);

переместит курсор в верхний левый угол активного окна (абсолютные
координаты (1,10)).

     Ограничения: Если задаются недопустимые координаты, то обра-
щение к процедуре игнорируется.

     См. также: Window, WhereX, WhereY.

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

     Назначение: Позиционирует курсор в точку с заданными коорди-
натами.

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

     Описание: procvedure GoToXY(X, Y: Byte);

     Примечания: Верхний  левый угол задается координатами (1,1).
Переменная Cursor устанавливается в (X-1,Y-1),  поскольку  в  ней
хранится позиция относительно точки (0,0), а не (1,1).

     Подпрограммы GotoXY,  WhereX и WhereY предназначены в основ-
ном для совместимости с модулем Crt,  предусмотренной  в  Borland
Pascal для DOS. Отсчитываемые от 1 координаты этих подпрограмм не
согласуются с  остальными  подпрограммами  и  переменными  модуля
WinCrt, поэтому вместо них рекомендуется использовать подпрограм-
му CursorTo и переменную Cursor.

     См. также: WhereX, WhereY.

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

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

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

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

     Примечания: Возвращает  текущий  указатель в нулевую точку и
устанавливает для графической системы параметры:

     - область просмотра;
     - палитру;
     - фоновый и основной цвет;
     - тип линии и образец линии;
     - тип заполнителя,  образец заполнителя и цвет  заполнителя,
       принятые по умолчанию.

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

     См. также: InitGraph.

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

     Назначение: Для заданного кода ошибки (ErrorCode) возвращает
строку сообщения об ошибке.

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

     Описание: function     GraphErrorMsg(ErrorCode:    Integer):
String;

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

     "Device driver not found" (не найден драйвер устройства)

вместо:

     "error code - 3" (код ошибки - 3).

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

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

     Пример:

     uses Graph;
     var
       GraphDriver, GraphMode : integer;
       ErrorCode : integer;
     begin
       GraphDiver := Detect;
       InitGraph(GraphDriver,GraphMode,'');
       if Graphesult <> grOk then
          Halt(1);
       begin
         Writeln('Ошибка графики: ',GraphErrorMsg(ErrorCode);
         Readln;
         Halt(1);
       end;
        Line(0, 0, GetMaxX, GetMaxY);
        Readln;
        CloseGraph;
     end.



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

     Назначение: Возвращает  для  последней  графической операции
код ошибки.

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

     Описание: function GraphResult: Integer;

     Примечания: Возвращает код ошибки для  последней графической
операции. См. ниже список констант grXXXX.

     GraphResult устанавливают следующие подпрограммы:

     Bar                GetGraphMode           SetAllPalette
     Bar3D              ImageSize              SetFillPattern
     ClearViewPort      InitGraph              SetFillStyle
     CloseGraph         InstallUserDriver      SetGraphBufSize
     DetectGraph        InstallUserFont        SetGraphMode
     DrawPoly           PieSlice               SetLineStyle
     FillPoly           RegisterBGIdriver      SetPalette
     FloodFill          RegisterBGIfont        SetTextJustify
                                               SetTextStyle

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

     См. также: GraphErrorMsg, константы grXXXX.
     Пример:

     uses
      Graph;
     var
      ErrorCode : integer;
      GrDriver, GrMode : integer;
     begin
       GrDriver := Detect;
       InitGraph(GrDriver,GrMode);
       ErrorCode := Grapesult;  { проверка на ошибки }
       if ErorCode <> grOk then
       begin
         Writeln('Ошибка графики: ');
         Writeln(GraphErrorMsg(ErroeCode));
         Writeln('Программа аварийно завершила работу!...');
         Halt(1);
       end;
     { выполнить некоторые графические функции }
       ClearDevice;
       Rectangle(0,0,GetMaxX,GetMaxY);
       Readln;
       CloseGraph;
     end.



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

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

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

     Описание: procedure Наlt [ (ExtCode: Word) ];

     Примечания: Параметр ExtCode (код  завершения)  представляет
собой необязательное выражение длиной в слово, которое задает код
завершения программы. Процедура Наlt без параметров соответствует
вызову Наlt(0). Код завершения может проверяться порождающим про-
цессом с помощью функции EхitCode модуля Dos или с  помощью  про-
верки ERRORLEVEL в командном файле DOS.

     Заметим, что  процедура Наlt инициализирует выполнение имею-
щихся в модуле процедур завершения Exit.  Дополнительную информа-
цию вы  можете найти в Главе 22 ("Вопросы управления") "Руководс-
тва по языку".

     См. также: RunError, Exit.

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

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

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

     Описание: function Нi(x): Byte;

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

     См. также: Lo, Swap.

     Пример:

     var
       w : word;
     begin
       w := Hi($1234);                             { $12 }
     end;

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

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

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

     Описание: function НiByte(A: Word): Byte;

     Примечания: Функция НiByte возвращает старший байт  значения
A.

     См. также: LoByte.


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

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

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

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

     Примечания: Параметр x представляет собой идентификатор ссы-
лочной переменной. Обозначенный x тип или тип переменной, обозна-
ченной  x,  должен быть порядковым типом,  массивом или строковым
типом.  Для порядкового типа High возвращает старшее  значение  в
диапазоне индексного типа массива. Для строкового типа High возв-
ращает описанный размер строки. Для открытого массива или строко-
вого параметра High возвращает значение типа Word, показывая чис-
ло элементов в фактическом параметре, минус 1.

     См. также: Low.

     Пример:

     function Sum(var X: array of Real): Real;
     var
       I: Word;
       S: Real;
     begin
       S: := 0;
       for I := 0 to High(X) do S := S + X[I];
       Sum := S;
     end;

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

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

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

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

     Примечания: В  модуле  Crt   имеется   байтовая   переменная
TextAttr,  которая  используется  для  хранения текущих атрибутов
изображения. Процедура HighVideo устанавливает для цвета символов
переменной  TextAttr  бит  подсветки.  Таким образом,  цвета 0..7
отображаются в цвета 8..15.

     См. также: NormVideo, LowVideo, TextColor, TextBackGround.

     Пример:

     uses Crt;
     begin
       TextAttr := LightGray;
       HighVideo;                       { цвет становится белым }
     end;

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

     Назначение: Возвращает старшее слово значения LongInt.

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

     Описание: function НiWord(A: Longint): Word;

     Примечания: Функция НiWord возвращает старший байт  значения
A.

     См. также: LoWord.

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

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

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

     Описание: function ImageSize(x1, y1, x2, y2: Integer): Word;

     Примечания: Параметры x1, y1, x2 и y2 определяют прямоуголь-
ную область экрана.  Функция ImageSize определяет число байт, не-
обходимых  функции Getimage для сохранения заданной области экра-
на. Размер двоичного образа области экрана включает в себя память
размером в несколько слов.  В первом слове хранится ширина облас-
ти, а во втором - высота. Следующие несколько слов содержат атри-
буты самой области. Последнее слово резервируется.

     Если объем памяти,  необходимый для сохранения области, пре-
вышает  или  равен  64К,  то  возвращается  значение  0 и функция
GraphResult возвращает значение -11 (grError).

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

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

     Пример:

     uses Graph;
     var
       Gd, Gm : integer;
       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^);
       Readln;
       ClearDevice;
       PutImage(100, 100, P^, NormalPut);
       Readln;
       CloseGraph;
     end.



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

     Назначение: Увеличивает значение переменной.

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

     Описание: procedure Inc(x [ ; n : longint ] );

     Примечания: Параметр x представляет собой  переменную  пере-
числимого типа,  а n - целочисленное выражение. Значение x увели-
чивается на 1 (или на n в  случае  явного  задания  n).  То  есть
Inс(x) соответствует x := x+1, а Inс(x,n) соответствует x := x+n.
Функция Inс порождает оптимизированный код и особенно  полезна  в
больших циклах.

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

     Пример:

     var
       IntVar  : intege;
       LongIntVar : longint;
     begin
       Inc(IntVar);              { intVar := IntVar + 1 }
       Inc(LongIntVar);          { LongIntVar := LongIntVar + 5 }


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

     Назначение: Включает элемент в множество.

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

     Описание: procedure Include(var S: set of T; I: T);

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

     Include(S, I)

соответствует:

     S := S + [I]

но процедура Include генерирует более эффективный код.

     См. также: Exclude.

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

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

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

     Описание: procedure  InitGraph(var  GrDriver:  Integer;  var
Mode: Integer; Path : String);

     Примечания: И параметр GrDriver (графический драйвер), и па-
раметр  Mode (графический режим) являются параметрами-переменными
(var).

     Если параметр GrDriver равняется Detect,  то выполняется вы-
зов процедуры DetectGraph,  загружается соответствующий драйвер и
выбирается графический режим.

     Если параметр GrDriver не равен 0,  то значение этого  пара-
метра рассматривается,  как номер драйвера. Этот драйвер загружа-
ется и система переводится в режим, определяемый параметром Mode.
Заметим,  что если значение автоматического распознавания аппара-
туры изменено,  то вы должны для требуемого  драйвера  обеспечить
правильный параметр Mode.

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

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

     С помощью обращения к процедуре  GraphGetМем  в  динамически
распределяемой  области  для графического драйвера выделяется па-
мять.  При обращении к процедуре CloseGraph эта память освобожда-
ется.

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

     Если происходит ошибка,  то процедура GraphDriver и  функция
GraphResult  возвращают  одно из значений grXXXX:  grNotDetected,
grFileNotFound,  grInvalidDriver,  grNoLoadMem или  grInvalidMode
(см. выше).

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

     Для установки поставляемых фирмами драйверов можно использо-
вать процедуру InstallDriver (более подробная  информация  содер-
жится в описании процедуры InstallUserDriver).

     Для каждого  поддерживаемого графического драйвера определен
ряд полезных констант (см. в начале главы).

     Ограничения: Должен использоваться графический  режим.  Если
вы работаете с графическим интерфейсом фирмы Borland (BGI) и пла-
той Zenith Z-449, код автообнаружения Borland Pascal всегда будет
распознавать улучшенный режим EGA.  Если этот режим несовместим с
вашим монитором,  то выберите в вызове  InitGraph  другой  режим.
Кроме того,  Pascal не может автоматически распознавать графичес-
кую плату IBM 8514  (логика  автообнаружения  распознает  ее  как
VGA).  Таким  образом,  чтобы  использовать IBM 8514,  переменной
GraphDriver нужно при вызове InitGraph присвоить значение IBM8514
(которое определено в модуле Graph).  При наличии платы IBM 8514,
если вы не эмулируете режим VGA,  использовать  DetectGraph  (или
Detect с InitGraph) не следует.

     См. также:    CloseGraph,    DetectGraph,    RestoreCrtMode,
SetGraphMode,  GraphResult,  InstallUserDriver,  SetGraphBufSize,
RegisterBGIDriver, RegisterBGIFont, GraphDefaults.

     Пример:

     uses  Graph;
     var
       grDriver : integer;
       grMode   : integer;
       EmCode   : integer;
     begin
      gDriver := Detect;
      InitGraph(grDiver,grMode,'');
      ErrCode := GraphResult;
      it ErrCode <> grOk then
      begin                   { выполнить графические функции }
       Line(0, 0, GetMaxX, GetMaxY);
       Readln;
       CloseGraph;
      end
      else
        Writeln('Ошибка графики : ',GraphErrorMsg(ErrCode));
      end.



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

     Назначение: Создает окно CRT (если оно еще не создано).

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

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

     Примечания: Подпрограммы Read,  Readln,  Write или Writeln с
файлом, присвоенным CRT,  для обеспечения существования окна  CRT
автоматически вызывают процедуру InitWinCrt.

     Для определения характеристик окна CRT InitWinCrt использует
переменные WindowOrg, WindowSize, ScreenSize и WindowTitle.

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

     Назначение: Вставляет в строку подстроку.

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

     Описание: procedure Insert(String1:  String;  var s: String;
Indx: Integer);

     Примечания: Параметр  String1  представляет  собой выражение
строкового типа.  Параметр s - переменная строкового  типа  любой
длины. Параметр Indx является выражением целого типа. Данная про-
цедура вставляет строку, задаваемую параметром String1, в строку,
задаваемую параметром s, начиная с позиции, определяемой парамет-
ром Indx.  Если получившаяся в результате  строка  превышает  256
символов, то она усекается до 255 символов.

     См. также: Delete, Copy, ConCat, Pos, Length.

     Пример:

     var
       s : string;
     begin
       s := 'Honest Lincoln';
       Insert('Abe',s,8);                  { Honest Abe Lincoln }
     end;

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

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

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

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

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

     Всем позициям  символов  новой строки присваивается значение
пробела с текущими атрибутами текста.  Таким образом, если проце-
дурой TextВасkGround не установлен фоновый черный цвет,  то новая
строка имеет черный фоновый цвет.

     Данная процедура зависит от используемого окна. Например:

     Window(1, 10, 60, 20);
     InsLine;

приведет к вставке строки длиной в 60 символов в точке с абсолют-
ными координатами (1,10).

     См. также: DelLine, Window.

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

     Назначение: Включает   в  таблицу  драйверов  устройств  BGI
(Borland) драйверы, поставляемые другими фирмами.

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

     Описание: function      InstallUserDriver(Name:      String;
AutoDetectPtr: Pointer): Integer;

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

     Если внутренняя таблица драйверов  заполнена,  то  процедура
InstallUserDriver возвращает значение -11 (grError).  В противном
случае данная процедура присваивает и возвращает для нового драй-
вера устройства номер этого драйвера.

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

     var
       Driver, Mode : integer;
     begin
       Driver := InstallUserDriver('SGA.BGI', Nil);
       if Driver = grError then   { таблица переполнена? }
          Halt(1);
       Mode := 0;      { каждый драйвер поддерживает режим 0 }
       InitGraph(Driver, Mode, ''); { изменить автоматическое
                                      распознавание }
       ...             { нет графики }
     end.

     Значение nil  параметра AutoDetectPtr при обращении к проце-
дуре InstallUserDriver показывает,  что для платы SGA функция ав-
томатического распознавания отсутствует.

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

      {$F+}
      function DetectSGA : integer;
      var Found : Boolean;
      begin
        DetectSGA := grError; { предположим, плата отсутствует }
        Found := ...           { поиск соответствующего аппарат-
                                 ного обеспечения }
        if not Found then
           Exit;               { код возврата = -11 }
        DetectSGA := 3;        { возвратить рекомендуемый и наз-
                                 начаемый по умолчанию видео-
                                 режим }
      end.
      {$F-}

     Задача функции DetectSGA состоит в поиске  во  время  работы
программы аппаратного обеспечения SGA.  Если плата SGA не обнару-
жена, то данная функция возвращает значение -11 (grError). В про-
тивном  случае  возвращаемое значение представляет собой принятый
по умолчанию видеорежим для платы SGA (обычно он обеспечивает на-
илучшее сочетание цвета и разрешающей способности,  которые можно
достичь на данном аппаратном обеспечении).

     Заметим, что эта функция не требует параметров  и возвращает
целочисленное  значение  со знаком.  Она должна иметь дальний тип
обращения.  При установке драйвера (путем обращения  к  процедуре
InstallUserDriver) вы передаете наряду с именем файла, содержаще-
го драйвер устройства, адрес DetectSGA:

     var
       Driver, Mode : integer;
       begin
         Driver := InstallUserDriver('SGA.GBI', @DetectSGA);
         if Driver = grError then
            Halt(1);
         Driver := Detect;
         { не будем учитывать драйвер SGA, доверимся средствам
           автоматического распознавания }
         InitGraph(Driver, Mode, '');
           .
           .
           .
     end.

     После того,  как  вы установите драйвер устройства и функцию
автоматического распознавания, можно вызвать процедуру InitGraph,
которая  выполнит  обычный процесс автоматического распознавания.
Перед тем, как процедура InitGraph вызывает свою встроенную функ-
цию  автоматического  распознавания  (DetectGraph),  она вызывает
сначала функцию DetectSGA.  Если DetectSGA не  найдет  аппаратных
средств SGA,  то возвращается значение -11 (grError), а процедура
InitGraph продолжит выполнение обычного  процесса автоматического
распознавания  (который также может включать в себя вызов пользо-
вательских функций автоматического распознавания в том порядке, в
котором они были установлены).  Если же функция DetectSGA опреде-
лит наличие SGA, то она возвращает неотрицательное значение режи-
ма,  а InitGraph найдет и загрузит файл SGA.BGI,  переведет аппа-
ратное  обеспечение  в  нужный  режим  (рекомендованный  функцией
DetectSGA) и, наконец, передаст управление вашей программе.

     См. также: InitGraph, RegisterBGIDriver.

     Пример:

     uses Graph;
     var
       Driver, Mode,
       TestDriver,
       ErrCode : integer;
     {$F+}
     function TestDetect : integer;
     { функция автоматического распознавания:  если имеются соот-
       ветствующие аппаратные средства,  она возвращает значение,
       равное соответствующему принимаемому по умолчанию режиму }
     begin
       TestDetect := 1;           { по умолчанию режим = 1 }
     end;
     {$F-}
     begin
       { установить драйвер }
       TestDriver := InstallDriver('TEST', @TestDetect);
       if GraphResult <> grOk then
       begin
         Writeln('Ошибка при установке драйвера');
         Halt(1);
       end;
       Driver := Detect;         { перейти в графический режим }
       InitGraph(Driver, Mode, '');
       ErrCode := GraphResult;
       If ErrCode <> grOk then
       begin
         Writeln('Устанавливаемый драйвер поддерживается...');
         Readln;
         CloseGraph;
      end.

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

     Назначение: Устанавливает новый шрифт,  не предусмотренный в
системе фирмы Borland (BGI).

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

     Описание: function InstallUserFont(Name: String): Integer;

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

     Прочее: См. также процедуру SetTextStyle.

     Пример:

     uses Graph;
     var
       Driver, Mode : integer;
       TestFont : integer;
     begin
      TestFont := InstallUserFont('TEST'); { установить шрифт }
      if GraphResult <> grOk then
      begin
        Writeln('Ошибка при установке шрифта TestFont; будет
    использоваться DefaultFont');
        Readln;
      end;
      Driver := Detect; { перевести в графический режим }
      InitGraph(Driver, Mode, '');
      if GraphResult <> grOk then
         Halt(1);
      SetTextStyle(TestFOnt, HorizDir, 2); { использовать новый
                                             шрифт }
      OutText('Поддерживается новый установленный шрифт...');
      Readln
      GloseGraph;
     end.

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

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

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

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

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

     См. также: Frаc, Trunc, Round.

     Пример:

     var
       r : real;
     begin
       r := Int(123.456);                   {  123 }
       r := Int(-123.456);                  { -123 }
     end.

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

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

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

     Описание:

     procedure Intr(IntNum: Byte; var Regs: Registers); { DOS }

     procedure Intr(IntNum: Byte; var Regs: TRegisters);{Windows}

     Примечания: Параметр IntNum - это номер программного  преры-
вания (0...255).  TRegisters является записью, определенной в мо-
дуле WinDos (см. описание регистрового типа).

     Перед выполнением указанного программного прерывания функция
Intr,  используя запись Rеgs,  загружает регистры AХ, BХ, CХ, DХ,
ВР,  SI,  DI, DS и ЕS процессора 8086. После того, как прерывание
будет выполнено, содержимое регистров AХ, BХ, CХ, DХ, ВР, SI, DI,
DS, ES и регистров флагов опять сохраняется в записи Regs.

     Для получения  более подробной информации по разработке про-
цедур обработки прерываний см.  раздел "Обработка  прерываний"  в
Главе 22 "Руководства по языку".

     Ограничения: Программные  прерывания,  для  которых на входе
требуется задание определенных значений в SР или SS  или изменяют
значения SР и SS на выходе, с использованием данной процедуры вы-
полняться не могут.

     См. также: процедуру MsDos.

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

     Назначение: Возвращает целое значение,  представляющее собой
состояние последней выполненной операции ввода-вывода.

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

     Описание: function IOResult: Integer;

     Примечания: Чтобы перехватить ошибки ввода-вывода  с помощью
функции  IORеsult,  проверка  ввода-вывода  должна быть выключена
(директива компилятора {$I-}).  Если проверка ввода-вывода выклю-
чена и происходит ошибка ввода-вывода, то, пока выполняется обра-
щение к функции IORеsult,  все последующие операции  ввода-вывода
игнорируются. Обращение в функции IORеsult сбрасывает ее внутрен-
ний флаг ошибки.

     Перечень возвращаемых кодов ошибок приведен в Главе 4.  Зна-
чение 0 отражает успешное выполнение операции ввода-вывода.

     Пример:

     var
       f : file of byte;
     begin
       { получить командную строку с именем файла }
       Assign(f, ParamStr(1));
       {$I-}
       Reset(f);
       {$I+}
       if IOResult = 0 then
           Writeln('Размер файла в байтах :',FileSize(f));
       else
           Writeln('Файл не найден');
      end.

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

     Назначение: Процедура  Кееp  (завершить  работу и оставить в
памяти) прерывает работу программы и оставляет ее  резидентной  в
памяти.

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

     Описание: procedure Keep(Code: Word);

     Примечания: Весь код программы, включая сегмент данных, сег-
мент стека и динамически распределяемую область,  остается  рези-
дентным в памяти.  Поэтому необходимо убедиться в том,  что с по-
мощью директивы компилятора  $М  вы  задали  максимальный  размер
динамически распределяемой  области.  Параметр Code соответствует
коду завершения, передаваемому стандартной процедуре Наlt.

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

     См. также: DosExitCode.

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

     Назначение: Возвращает значение Truе, если на клавиатуре на-
жата клавиша и False в противном случае.

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

     Описание: function KeyPressed: Boolean;

     Примечания: Символ (или символы) остаются в буфере клавиату-
ры.  Данная процедура не распознает клавиш перевода регистра, та-
ких, как Shift,  Аlt,  NumLock и т.д. Клавишу можно считать с по-
мощью функции ReadKey.

     См. также: ReadKey.

     Пример:

     uses Crt;
     begin
       repeat
         Write('Xx');         { заполнять экран, пока нажата кла-
                                виша }
        until KeyPressed;
     end;

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

     Назначение: Возвращает значение Truе, если на клавиатуре на-
жата клавиша и False в противном случае.

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

     Описание: function KeyPressed: Boolean;

     Примечания: Символ (или символы) остаются в буфере клавиату-
ры.  Данная процедура не распознает клавиш перевода регистра, та-
ких, как Shift,  Аlt,  NumLock и т.д. Клавишу можно считать с по-
мощью функции ReadKey.

     См. также: ReadKey.

     Пример:

     uses Crt;
     begin
       repeat
         Write('Xx');         { заполнять экран, пока нажата кла-
                                виша }
        until KeyPressed;
     end;

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

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

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

     Описание: Length(s: String): Integer;

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

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

     Пример:

     var
       s : string;
       i : word;
     begin
       s := 'abc';
       for i := 1 to Lenth(s) do
         s[i] := UpCase(s[i]);
         Writeln(s);                       { ABC }
     end.

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

     Назначение: Рисует прямую линию из  точки  (x1,y1)  в  точку
(x2,y2).

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

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

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

     Заметим, что

     MoveTo(100,100);
     LineTo(200,200);

эквивалентно

     LineTo(100,100,200,200);
     MoveTo(200,200);

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

     Ограничения: Должен использоваться графический режим.  Кроме
того, при изображении горизонтальной линии подпрограмма Bar рабо-
тает быстрее, чем Line.

     См. также:  LineTo,  LineRel,  SetWriteMode,   GetLineStyle,
MoveTo, Rectangle, SetColor, SetLineStyle.

     Пример:

     uses Crt, Graph;
     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(gd, Gm, '');
       if GraphResult <> 0 then
          Halt(1);
     Randomize;
     repeat
       Line(Random(200),Random(200),Random(200),Random(200));
     until KeyPressed;
     Readln;
     CloseGraph;
     end.

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

     Назначение: Проводит прямую в точку,  заданную относительным
расстоянием от текущего указателя (CP).

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

     Описание: procedure LineRel(Dx,Dy: Integer);

     Примечания: Данная процедура вычерчивает прямую линию из те-
кущей точки  в точку,  заданную относительным расстоянием (Dх,Dу)
от текущего указателя. Процедура рисует прямую, толщина и тип ко-
торой  задаются  процедурой SetLineStyle,  а цвет устанавливается
процедурой SetColor.  Относительные команды перемещения и рисова-
ния полезны при вычерчивании различных объектов на экране,  у ко-
торых начальная точка может быть изменена (чтобы,  например,  вы-
чертить ту же самую фигуру в другом месте экрана).  Для определе-
ния того,  будет ли строка копироваться на экран или выводиться с
использованием операции XOR, применяйте SetWriteMode.

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

     См. также:  GetLineStyle,  Line,  LineTo,  MoveRel,  MoveTo,
SetLineStyle, SetWriteMode.

     Пример:

     uses Graph;
      var
        Gd, Gm : integer;
      begin
        Gd := Detect;
        InitGraph(gd, Gm, '');
        if GraphResult <> 0 then
           Halt(1);
     begin
      MoveTo(1,2);
      LineRel(100,100);      { провести прямую в точку (101,102) }
      end;
      Readln;
      CloseGraph;
     end.

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

     Назначение: Рисует прямую линию из точки, в которой находит-
ся текущий указатель, в точку (X,Y).

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

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

     Примечания: Рисует прямую,  толщина и тип  которой  задаются
процедурой   SetLineStyle,   а  цвет  устанавливается  процедурой
SetColor.

     Заметим, что операторы:

     MoveTo(100, 100);
     LineTo(200, 200);

эквивалентны вызову:

     Line(100, 100, 200, 200);

     Первый метод требует больше времени для выполнения и больше-
го объема памяти для  выполняемого  кода.  Используйте  процедуру
LineТо только когда текущий указатель находится в одном из концов
прямой.  Отметим,  что второй метод не изменяет значения текущего
указателя.

     Процедура LinеТо перемещает текущий указатель в точку (X,Y).

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

     См. также:  GetLineStyle,  Line,  LineRel,  MoveTo, MoveRel,
SetLineStyle, SetWriteMode.

     Пример:

     var
       Gd, Gm : integer;
     begin
       Gd := Detect;
       InitGraph(gd, Gm, '');
       if GraphResult <> 0 then
          Halt(1);
     Randomize;
     repeat
       LineTo(Random(200),Random(200));
     until KeyPressed;
     Readln;
     CloseGraph;
    end.

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

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

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

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

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

     См. также: Exp.

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

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

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

     Описание: function Lо(x): Byte;

     Примечания: Параметр x - это параметр целого типа или  пара-
метр  длиной в слово.  Функция Lо возвращает младший байт x в ка-
честве беззнакового значения.

     См. также: Hi, Swap.

     Пример:

     var
       w : word;
     begin
       w := Lo($1234);                       { $34 }
     end.

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

     Назначение: Загружает библиотечный модуль.

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

     Описание: function LоadLibrary(LibFileName: PChar): THandle;

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

     В Windows,  если параметр LibFileName не задает диск и ката-
лог, LoadLibrary будет выполнять поиск в следующих  каталогах  (в
указанном порядке):

     * в текущем каталоге;

     * в каталоге Windows (имя маршрута этого каталога возвращает
       функция GetWindowsDirectory);

     * в системном каталоге Windows (имя маршрута этого  каталога
       возвращает функция GetSystemDirectory);

     * в каталогах, перечисленных в переменной операционной среды
       PATH.

     В защищенном режиме DOS, если параметр LibFileName не задает
диск и каталог, LoadLibrary будет выполнять поиск в следующих ка-
талогах (в указанном порядке):

     * в текущем каталоге;

     * в каталоге,  содержащем файл .EXE текущей прикладной прог-
       раммы;

     * в каталогах, перечисленных в переменной операционной среды
       PATH.


   Значения ошибок,  возвращаемых  LoadLibrary,  перечислены  в
едующей таблице:

ДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
начение і              Смысл                                 і
ДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
  0     і Нет памяти, запорчен выполняемый файл, либо переме-і
        і щения недопустимы.                                 і
        і                                                    і
  2     і Файл не найден.                                    і
        і                                                    і
  3     і Маршрут не найден.                                 і
        і                                                    і
  5     і Попытка динамической компоновки или совместного ис-і
        і пользования дала нарушение защиты в сети.          і
        і                                                    і
  6     і Библиотека требует для каждой задачи отдельных сег-і
        і ментов данных.                                     і
        і                                                    і
  8     і Для запуска прикладной программы не хватает памяти.і
        і                                                    і
  10    і Некорректная версия Windows.                       і
        і                                                    і
  11    і Недопустимый файл .EXE (не приложение  Windows  илиі
        і ошибка в образе .EXE).                             і
        і                                                    і
  12    і Приложение создано для другой операционной системы.і
        і                                                    і
  13    і Приложение версии 4.0 DOS.                         і
        і                                                    і
  14    і Неизвестный тип .EXE.                              і
        і                                                    і
  15    і Попытка в защищенном режиме (стандартном или  улуч-і
        і шенном режиме 386) загрузить файл .EXE, созданный ві
        і более ранней версии Windows.                       і
        і                                                    і
  16    і Попытка загрузить  второй экземпляр файла .EXE, со-і
        і держащий несколько записываемых сегментов данных.  і
        і                                                    і
  17    і Попытка в режиме EMS  с  большим  кадром  загрузитьі
        і второй экземпляр  приложения, которая компонуется сі
        і уже используемой неразделяемой DLL.                і
        і                                                    і
  18    і Попытка  в  реальном  режиме  загрузить  прикладнуюі
        і программу, помеченную только для защищенного  режи-і
        і ма.                                                і
        і                                                    і
  19    і Была  попытка  загрузки  упакованного  выполняемогоі
        і файла. Перед загрузкой файл должен быть распакован.і
        і                                                    і
  20    і Недопустимая  библиотека   динамической  компоновкиі
        і (DLL), или одна из DLL,  требуемая  для  выполненияі
        і прикладной программы, была недопустимой.           і
        і                                                    і
  21    і Приложение требует 32-битовых расширений  Microsoftі
        і Windows.                                           і
ДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

     См. также: FreeLibrary, GetProcAddress.

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

     Назначение: Загружает ресурс в память.

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

     Описание: function LoadResource(Instance:  THandle; ResInfo:
THandle): THandle;

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

     Функция LoadResoure  загружает  ресурс в память только в том
случае, если он не был ранее загружен.  В  противном  случае  она
просто возвращает  описатель существующего ресурса.  LoadResource
увеличивает на 1 значения счетчика ссылок для ресурса. Ресурс ос-
тается загруженным,    пока    счетчик   ссылок   путем   вызовов
FreeResource не уменьшается до нуля.

     Ограничения: Фактическая загрузка  ресурса  не  выполняется,
пока для    трансляции    описателя,    возвращаемого    функцией
LoadResource, в указатель на данные ресурса не вызывается функция
LockResource.

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

     Назначение: Загружает в память строку ресурса.

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

     Описание: function LoadResource(Instance: THandle; ID: Word;
Buffer: PChar; BufferMax: Integer): Integer;

     Примечания: Загружает из выполняемого файла, заданного пара-
метром Instance,  строку ресурса,  заданного параметром ID. Пара-
метр Instance - это описатель экземпляра модуля, получаемый обыч-
но из переменной HInstance модуля System или создаваемый функцией
LoadLibrary. Параметр  ID  -  это  целочисленный идентификатор на
загружаемую строку.  Параметры Buffer и BufferMax задают адрес  и
размер буфера,  в  который копируется строка с завершающим нулем.
Возвращаемое значение представляет собой число копируемых в буфер
символов или 0, если строка ресурсов не существует.

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

     Назначение: Возвращает младший байт параметра Word:

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

     Описание: function LoByte(A: Word): Byte;

     Примечания: LoByte возвращает младший байт значения,  задан-
ного A.

     См. также: HiByte.

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

     Назначение: Блокирует ресурс.

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

     Описание: function LockByte(ResData: THAndle): Pointer;

     Примечания: LockByte блокирует ресурс,  заданный  параметром
ResData, и возвращает указатель на первый байт ресурса.  Если ре-
сурс является выгружаемым, то счетчик его блокировки увеличивает-
ся на 1,  и ресурс остается в памяти,  пока счетчик блокировки не
будет уменьшен до 0 с помощью вызовов функции UnlockResource.

     Возвращаемое значение - это указатель на первый байт ресурса
при успешном выполнении LockResource и nil в противном случае.

     Ограничения: Функции LockResource не следует передавать зна-
чение, возвращаемое FindResource.

     См. также: FreeResource, LoadResource.

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

     Назначение: Блокирует выгружаемый сегмент.

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

     Описание: function LockSegment(Segment: Word): THandle;

     Примечания: Параметр  Segment  задает  селектор блокируемого
сегмента. Если сегмент выгружаемый,  то счетчик блокировки увели-
чивается на 1,  и сегмент будет оставаться в памяти, пока счетчик
блокировки для него путем вызова функции UnlockSegment не  станет
равным нулю.  Для  невыгружаемых сегментов функция LockSegment не
действует. В случае успешного выполнения  LockSegment  возвращает
ненулевое значение;  если  сегмент  был  выгружен,  или произошла
ошибка, то возвращаемое значение равно 0.

     См. также: UnlockSegment.

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

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

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

     Описание: function LoWord(A: Longint): Byte;

     Примечания: LoWord возвращает младший байт значения,  задан-
ного A.

     См. также: HiWord.

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

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

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

     Описание: function Low(X);

     Примечания: Параметр  X  - это идентификатор типа или ссылка
на переменную.  Тип,  обозначенный X, или тип переменной, обозна-
ченный X, должен быть порядковым типом, типом массива или строко-
вым типом.  Для порядкового типа функция Low  возвращает  младшее
значение в диапазоне типа.  Для типа массива Low возвращает млад-
шее значение в диапазоне индексного типа массива.  Для строкового
типа Low возвращает 0. Для открытого массива или строкового пара-
метра Low возвращает 1.

     См. также: High.

     Пример:

     { под Windows используйте WinCrt }
     var
       A: array[1..100] of Integer;
       I: Integer;
     begin
       for I := Low(A) to High(A) do A(I) := 0;
     end.

     type
       TDay = (Понедельник, Вторник, Среда, Четверг, Пятница,
               Суббота, Воскресенье);
     const
       DayName: array[TDay] of string[3] = (
         'Пон', 'Втр', 'Срд', 'Чет', 'Птн', 'Суб', 'Вос');
     var
       Day: TDAy:
       Hourse: array[TDay] of 0..24;
     begin
       for Day := Low(TDay) to High(TDay) do
       begin
         Write('Сколько рабочих часов в ', DayName[Day], '? ');
         Readln(Hours[Day]);
       end;
     end.

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

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

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

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

     Примечания: В  модуле  Crt   имеется   байтовая   переменная
TextAttr,  которая  используется  для  хранения текущих атрибутов
изображения.  Процедура LowVideo очищает для цвета символов пере-
менной TextAttr бит подсветки.  Таким образом, цвета 0..7 отобра-
жаются в цвета 8..15.

     См. также: HighVideo, NormVideo, TextColor, TextBackGround.

     Пример:

     uses Crt;
     begin
       TextAttr := White;
       LowVideo;               { цвет становится светло-серым }
     end.

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

     Назначение: Создает из двух значений типа Word значение типа
Longint.

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

     Описание: function MakeLong(A, B: Word): Longint;

     Примечания: Параметры  A  и B задают младшее и старшее слово
возвращаемого значения.

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

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

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

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

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

     В реальном режиме DOS MaxAvail сравнивает размер наибольшего
свободного блока ниже указателя динамически распределяемой памяти
с размером  свободной  памяти над указателем и возвращает большее
из двух значений. Минимальные и максимальные требования к динами-
чески распределяемой  области  ваша  программа может задать с по-
мощью директивы $M.

     В защищенном режиме DOS MaxAvail сравнивает размер  наиболь-
шего  свободного  блока ниже указателя динамически распределяемой
памяти внутри пространства вторичного  распределения  с  размером
свободной  памяти в глобальной динамически распределяемой области
(значение,  возвращаемое GlobalCompact) и возвращает  большее  из
двух значений.

     Прочее: См. также процедуру MemAvail.

     Пример:

     type
       PBuffer = ^TBuffer;
       TBuffer = array[0..16383] of Chap;
     var
       Buffer: PBuffer;
      begin
        .
        .
        .
        if MaxAvail < SizeOf(TBuffer) then
        Writeln('Не хватает памяти');
        else
        begin
      { выделить память в динамически распределяемой области }
        New(Buffer);
         .
         .
         .
        end;
         .
         .
         .
       end.

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

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

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

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

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

     В реальном режиме DOS MamAvail  вычисляется  путем  сложения
размеров всех свободных блоков ниже указателя динамически распре-
деляемой памяти с размером  свободной  памяти  над  указателем  и
возвращает  большее из двух значений.  Минимальные и максимальные
требования к динамически распределяемой  области  ваша  программа
может задать с помощью директивы $M.

     В защищенном режиме DOS MemAvail вычисляет  объем  свободной
динамически распределяемой   памяти   с  помощью  вызова  функции
GetFreeSpace и сложения этого размера с размером каждого  свобод-
ного блока  в области вторичного распределения администратора ди-
намически распределяемой области памяти.

     См. также: МахAvail.

     Пример:

     { под Windows используйте WinCrt }
     begin
       Writeln('Доступно ', MemAvail, 'байт');
       Writeln('Наибольший свободный блок равен ', MaxAvail,
       ' байт.');
     end.

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

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

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

     Описание: function   MessageBox(WndParent:   THandle;   Txt,
Caption: PChar; TextType: Word): Integer;

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

     Параметр WndHandle - это описатель окна,  которому принадле-
жит окно сообщений или 0, если окно сообщений не имеет владельца.
Параметр Text  представляет собой указатель на строку с завершаю-
щим нулем, содержащую выводимое сообщение. Параметр Caption - это
указатель на строку с завершающим нулем, которая содержит заголо-
вок диалогового окна. Если Caption имеет значение nil, то исполь-
зуется 'Error'.  Параметр TextType специфицирует пиктограмму, ко-
мандные кнопки и атрибуты окна сообщения - это  комбинация  конс-
тант mb_XXXX.

     Если для  создания  диалогового  окна не хватает памяти,  то
MessageBox возвращает 0. В противном случае возвращается значение
константы id_XXXX,  соответствующее активизированной для заверше-
ния диалога командной кнопке. См. определение констант id_XXXX.

     Когда создается модальное окно для указания, что система на-
ходится в  нижних  адресах памяти,  строки,  на которые указывают
Text и Caption, не должны извлекаться из файла ресурса, поскольку
загрузка ресурса  может  завершиться  неудачно.  Если  прикладная
программа вызывает   MessageBox   и    задает    mb_IconHand    и
mb_SystemModal, то, независимо от доступной памяти, Windows выво-
дит результирующее окно  сообщения.  Когда  задаются  эти  флаги,
Windows ограничивает  длину текста окна сообщения тремя строками.
Однако, так как Windows не разбивает автоматически строки,  чтобы
они помещались  в окно сообщений,  строка сообщений должна содер-
жать в нужных местах возвраты каретки.

     Если окно сообщений создается при наличии диалогового  окна,
используйте в  качестве описателя диалогового окна HWnd.  HWnd не
следует использовать для идентификации дочернего окна.

     В защищенном режиме DOS функция MessageBox не создает диало-
гового окна. Вместо этого она выводит на экране заголовок и сооб-
щение, за которыми следует список элементов выбора, соответствую-
щих требуемому набору командных кнопок, например:

     MessageBox(0, 'Сохранить текущие изменения?', 'TextEdit',
                mbYesNoCancel);

будет выводить:

     TextEdit: Сохранить текущие изменения?
     Yes (Y), No (N), Cancel (C):

и ждет от пользователя нажатия клавиши Y, N или C.

     В защищенном режиме DOS параметр WndParent игнорируется, как
и все константы mb_XXXX, не определяющие командные кнопки.

     См. также: Константы Id_XXXX, mb_XXXX.



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

     Назначение: Создает подкаталог.

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

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

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

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

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

     Пример:

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

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

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

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

     Описание: procedure Моvе(var Src, Dst; Count: Word);

     Примечания: Параметры Src и Dst представляют собой ссылки на
переменные любого типа. Параметр Count - это выражение типа Word.
Процедура Моvе копирует байтовый блок из Src,  размер которого (в
байтах) задается параметром Count,  в блок,  начинающийся первого
байта,  заданного параметром Dst. С данной процедурой следует ра-
ботать аккуратно, поскольку никаких проверок не выполняется.

      Когда области,  задаваемые параметрами Src и Dst, находятся
в одном сегменте, то есть когда адреса сегментов у них совпадают,
то процедура  Моvе  автоматически обнаруживает и компенсирует ка-
кие-либо перекрытия.  Для статически и динамически распределяемых
переменных внутрисегментных перекрытий никогда не происходит (ес-
ли только это не делается специально) и,  таким образом,  они  не
могут обнаруживаться.

     Там, где это возможно,  для определения параметра Count сле-
дует использовать функцию SizeOf.

      См. также: FillChar.

     Пример:

     var
       a : array[1..4] of char;
       b : longint;
      begin
        Move(a, b, SizeOf(a));          { для надежности исполь-
                                          зуется функция SizeOf }
      end.

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

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

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

     Описание: procedure MoveRel(Dx, Dy: Integer);

     Примечания: Процедура МоvеRеl перемещает текущий указатель в
точку, заданную относительным расстоянием (Dх,Dy) от точки, в ко-
торой находится текущий указатель.

     Относительные команды  перемещения  и  рисования полезны при
вычерчивании различных объектов на экране,  у  которых  начальная
точка может быть изменена (чтобы, например, вычертить ту же самую
фигуру в другом месте экрана).

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

      См. также:  GetMaxX,  GetMaxY, GetX, GetY, LineRel, LineTo,
MoveTo.

     Пример:

     uses Graph;
      var
        Gd, Gm : integer;
      begin
        Gd := Detect;
        InitGraph(gd, Gm, '');
        if GraphResult <> 0 then
           Halt(1);
       MoveTo(1,2);
       MoveRel(10,10)     { переместить в точку с координатами
                            (11,12) }
       PutPixel(GeyX, GetY, GetMaxColor);
      Readln;
      CloseGraph;
     end.

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

     Назначение: Перемещает текущий графический указатель в точку
(x,y).

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

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

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

     ClearDevice        InitGraph     MoveRel      SetGraphMode
     ClearViewPort      LineRel       MoveTo       SetViewPort
     GraphDefaults      LineTo        OutText

     Если активна текущая область просмотра, то текущий указатель
зависит от данной области (значения x и y будут  суммироваться со
значениями x1,  y1 текущей области просмотра). В границах текущей
области просмотра текущий указатель никогда не отсекается.

      См. также: GetMaxX, GetMaxY, GetX, GetY, MoveRel.

     Пример:

     uses Graph;
      var
        Gd, Gm : integer;
      begin
        Gd := Detect;
        InitGraph(gd, Gm, '');
        if GraphResult <> 0 then
           Halt(1);
     MoveTo(0,0);                     { левый верхний угол окна }
     LineTo(GetMaxX, GetMaxY);
       Readln;
       CloseGraph;
      end.

Функция MsDos                                          модуль Dos
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

     Назначение: Выполняет функциональный вызов DOS.

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

     Описание:

     procedure MsDos(var Regs: Registers);          { DOS }

     procedure MsDos(var Regs: TRegisters);         { Windows }

     Примечания: Результат обращения к функции MsDos будет тот же
самый, что и при обращении к функции Intr  с  номером  прерывания
IntNo $21. Registers представляет собой запись, описанную в моду-
ле  Dos.  Если  вы  пишете  программу  для  Windows,  используйте
тип TRegisters.

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

      См. также: Dos3Call, Registers, TRegisters, Intr.

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

     Назначение: Создает новую динамическую переменную и устанав-
ливает на нее указатель.

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

     Описание: procedure New(var p: Pointer);

     Примечания: Параметр p является переменной-указателем и  от-
носится к указателям любого типа. Размер выделяемого блока памяти
соответствует размеру того типа, на который указывает p. На вновь
созданную переменную можно ссылаться с помощью p^. Если для выде-
ления памяти под  новую  динамическую  переменную  в  динамически
распределяемой области недостаточно свободной памяти, то во время
выполнения программы происходит ошибка.  (Этой ошибки можно избе-
жать - см.  раздел "Функция HeapError" в Главе 21 "Руководства по
языку".)

      См. также: Dispose, FreeMem, HeapError, GetMem.

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

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

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

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

     Примечания: В  блоке   Crt   имеется   байтовая   переменная
(ТехtAttr), которая используется для сохранения текущего видеоат-
рибута.  Данная процедура восстанавливает для TехtAttr то  значе-
ние, которое эта переменная имела до запуска программы.

     См. также: HighVideo, LowVideo, TextColor, TextBackGround.

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

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

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

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

     Примечания: Следующий  фрагмент  программы вызывает звучание
сигнала частотой 440 герц в течении половины секунды.

     Sound(440);
     Delay(500);
     NoSound;

     См. также: Sound.

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

     Назначение: Проверяет, является ли аргумент нечетным числом.

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

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

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

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

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

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

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

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

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



Яндекс цитирования