ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 5 Функция Ord модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает порядковый номер для значения пере- числимого типа. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Ord(x): Longint; Примечания: Параметр x представляет собой выражение перечис- лимого типа. Результат имеет длинный целый тип и его значение яв- ляется порядковым значением для x. См. также: Chr. Процедура OutText модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Пересылает строку на устройство вывода в то место, в котором находится текущий указатель. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure ОutTехt(TextString: String); Примечания: Параметр TextString выводится в месте расположе- ния текущего указателя. При этом используются текущие параметры выравнивания. Если строка слишком длинная и не умещается на экра- не или в текущей области просмотра, то она усекается. Если акти- вен шрифт, используемый по умолчанию (шрифт с побитовым отображе- нием), а строка слишком велика и не умещается на экране, то она не выводится. В данной процедуре используется шрифт, установленный проце- дурой SetTextStyle. Чтобы обеспечить совместимость выполняемого кода при использовании нескольких шрифтов, для определения разме- ров строки используйте вызовы процедур TехtWidth и TехtHeight. Процедура OutText использует параметры вывода, установленные процедурой SetTextJustify (выравнивание, центрирование, поворот на 90 градусов и т.д.). Текущий указатель изменяется процедурой OutText только в том случае, если направление вывода текста горизонтальное и задано выравнивание по левой границе. Направление вывода текста (гори- зонтальное или вертикальное) задается с помощью процедуры SetTextStyle, а выравнивание - с помощью процедуры SetTextJustify (текущий указатель слева от строки, центрируется или расположен справа от строки, записывается над строкой, под строкой). Если параметр горизонтального выравнивания текста, установ- ленный с помощью процедуры SetTextJustify, равен CenterText или RightText, то Y элементов текущего указателя (СРY) будут смещены следующим образом: CPY := CPY + TextHeight(TextString) Если параметр горизонтального выравнивания текста, установ- ленный с помощью процедуры SetTextJustify, равен LeftText, то Х элементов текущего указателя (СРХ) будут смещены следующим обра- зом: CPX := CPX + TextWidth(TextString) В следующем примере в блоке 1 выводится ABCDEF и текущий указатель перемещается (текст выводится горизонтально и выравни- вается слева), в блоке 2 выводится ABC а DEF записывается справа над этим текстом, так как текст выравнивается справа, аналогично, в блоке 3 выводится текст ABC и над ним справа выводится DEF (так как текст выводится вертикально). program CPupdate; uses Graph; var Driver, Mode : integer; begin Driver := Detect; InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); { блок 1 } MoveTo(0, 0); SetTextStyle(DefaultFont, HorizDir, 1) { разм. симв. =1 } SetTextJustify(LeftText, TopText); OutText('ABC'); { текущий указатель изменяется } OutText('DEF'); { текущий указатель изменяется } { блок 2 } MoveTo(100, 50); SetTextStyle(DefaultFont, VerDir, 1) { разм. симв. =1 } SetTextJustify(LeftText, TopText); OutText('ABC'); { текущий указатель не изменяется } OutText('DEF'); { текущий указатель не изменяется } Readln; CloseGraph; end. Процедурой OutTextXY текущий указатель никогда не изменяет- ся. Выбираемый по умолчанию шрифт (шрифт с битовым образом 8х8) не границе экране не отсекается. В этом случае, если какая-либо часть строки не может быть помещена на экран, текст просто не вы- водится. Следующие операторы, например, не приведут к выводу текста: SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn); SetTextJustify(LeftText, TopText); OutTextXY(-5, 0); { эта точка выходит за границу экрана } OutText(GetMaxX -1, 0, 'ABC'); { буква 'A' } { 'BC' не помещаются } Однако векторные шрифты отсекаются на границе экрана. Ограничения: Должен использоваться графический режим. См. также: OutTextXY, SetTextStyle, SetTextJustify, GetTextSettings, TextHeight, TextWidth. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> grOk then Halt(1); OutText('Легко использовать'); Readln; CloseGraph; end. Процедура OutTextXY модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Пересылает строку на устройство вывода. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure OutTextXY(Х, Y: Integer; S: String); Примечания: Строка, заданная параметром S, выводится в точке (Х,У). Если строка слишком длинная и выходит за пределы экрана или текущей области просмотра, то она усекается. Процедура OutText используется для вывода текста в месте расположения текущего указателя, процедура OutTextXY используется для вывода текста в любом заданном месте экрана. См. также: OutText, SetTextStyle, SetTextJustify, GetTextSettings, TextHeight, TextWidth. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> grOk then Halt(1); MoveTo(0,0); OutText('Неэффективно'); OutTextXY(GetX,GetY,'Также неэффективно'); OutTextXY(0,0,'Превосходно!'); {заменяет выведенное ранее} Readln; CloseGraph; end. Процедура OvrClearBuf модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Очищает оверлейный буфер. Целевая платформа: Реальный режим. Описание: procedure OvrClearBuf; Примечания: Перед вызовом процедуры из оверлейного буфера выводятся все загруженные в данный момент оверлеи. Это приведет к тому, что при последующих обращениях к оверлейным программам оверлеи будут загружаться из оверлейного файла (или из памяти EMS). Если процедура OvrClearBuf вызывается из оверлея, то перед возвратом из OvrClearBuf этот оверлей будет немедленно перезагру- жен. Подсистема управления оверлеями не требует от вас вызова процедуры OvrClearBuf. Фактически, при обращениях к этой процеду- ре производительность вашей прикладной программы только ухудшит- ся, поскольку это приведет к необходимости перезагрузки оверлеев. Процедура OvrClearBuf предназначена только для особых случаев, например, для временного освобождения памяти, занимаемой оверлей- ным буфером. См. также: OvrGetBuf, OvrSetBuf. Процедура OvrGetBuf модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий размер оверлейного буфера. Целевая платформа: Реальный режим. Описание: function OvrGetBuf; Longint; Примечания: Размер оверлейного буфера устанавливается с по- мощью обращения к процедуре OvrSetBuf. Первоначально оверлейный буфер имеет минимальный возможный размер, соответствующий размеру наибольшего оверлея. При выполнении оверлейной программы буфер такого размера выделяется автоматически. Начальный размер буфера может превышать 64К, поскольку он включает в себя и код наиболь- шего оверлея, и его корректировочную информацию. См. также: OvrInit, OvrInitEMS, OvrSetBuf. Пример: {$M 16384,65536,655360 } use Overlay; const ExtractSize = 49152; { 48K } begin OvrInit('EDITOR.OVR'); Writeln('Начальный размер оверлейного буфера = ', OvrGetBuf, 'байт'); OvrSetBuf(OvrGetBuf+ExtractSize); Writeln('Размер оверлейного буфера увеличен теперь до ', OvrGetBuf, 'байт'); end. Функция OvrGetRetry модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий размер пробной области. Целевая платформа: Реальный режим. Описание: function OvrRetry: Longint; Примечания: Данная функция текущий размер пробной области, значение которой устанавливается OvrSetRetry. См. также: OvrSetRetry. Процедура OvrInit модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Инициализирует подсистему управления оверлеями и открывает оверлейный файл. Целевая платформа: Реальный режим. Описание: procedure OvrInit(FileName: String); Примечания: Если в параметре имени файла FileName буквенная метка дисковода или подкаталог не заданы, то подсистема управле- ния оверлеями ищет файл в текущем каталоге, в каталоге, содержа- щем файлы .EXE (при работе в DOS версии 3.х) и в каталогах, за- данных с помощью переменной операционной среды PATH. Возможные ошибки могут быть получены с помощью переменной операционной сре- ды OvrResult. Значение ovrOk говорит об успешном завершении, ovrError показывает, что оверлейный файл имеет неправильный фор- мат, или что программа не содержит оверлеев. Значение ovrNotFound означает, что не найден оверлейный файл. В случае ошибки подсистема управления оверлеями остается не- установленной и попытки вызова оверлейной программы приведут к ошибке этапа выполнения 208 (Overlay manager not installed - ад- министратор оверлеев не установлен). Процедура OvrInit должна вызываться перед любыми другими процедурами подсистемы управления оверлеями. См. также: OvrGetBuf, OvrInitEMS, OvrSetBuf. Пример: use Overlay; const begin OvrInit('EDITOR.OVR'); if OvrResult <> ovrOk then begin case OvrResult of ovrError: Writeln('Программа не содержит оверлеев'); ovrNotFound: Writeln('Оверлейный файл не найден'); end; Halt(1); end; end. Процедура OvrInitEMS модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Если это возможно, загружает оверлейный файл в память EMS. Целевая платформа: Реальный режим. Описание: procedure OvrInitEMS; Примечания: Если имеется драйвер дополнительной памяти, и существует достаточный объем такой памяти, то данная процедура загружает все оверлеи в расширенную память и закрывает оверлейный файл. Последующие загрузки оверлеев сводятся просто к быстрой пе- ресылке их из памяти в память. Процедура OvrInitEMS устанавливает также процедуру выхода, которая при завершении работы программы автоматически освобождает выделенную память EMS. Возможные ошибки могут быть получены с помощью переменной операционной среды OvrResult. Значение ovrOk говорит об успешном завершении, ovrError показывает, что процедура OvrInit заверши- лась неудачно или не была вызвана, ovrIOError говорит о том, что при чтении оверлейного файла произошла ошибка, ovrNoEMSDriver оз- начает, что не найден драйвер расширенной памяти, ovrNoEMSMemory - что для загрузки оверлейного файла в памяти EMS нет достаточно- го пространства. В случае ошибки подсистема управления оверлеями будет про- должать работу, но оверлеи будут считываться с диска. Драйвер расширенной памяти должен отвечать соглашениям фирм Lotus, Intel и Microsoft (Expanded Memory Specification - EMS). Если вы используете псевдодиск, размещенный в дополнительной па- мяти, то нужно убедиться в том, что команда, загружающая в файле CONFIG.SYS драйвер виртуального диска, оставляет некоторый сво- бодный объем расширенной памяти, который может использовать ваша прикладная задача. См. также: OvrGetBuf, OvrInit, OvrSetBuf, OvrReault. Пример: use Overlay; const begin OvrInit('EDITOR.OVR'); if OvrResult <> ovrOk then begin Writeln('Подсистема управления оверлеями', ' не установлена из-за ошибки'); Halt(1); end; OvrInitEMS; case OvrResult of ovrIOError: Writeln('Ошибка ввода-вывода при чтении', ' оверлейного файла'); ovrNoEMSDriver: Writeln('Не установлен драйвер', ' дополнительной памяти'); ovrNoEMSMemory('Не хватает объема памяти EMS'); else Writeln('Для более быстрой работы с оверлеями', ' используется память EMS'); end; end. Процедура OvrSetBuf модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает размер оверлейного буфера. Целевая платформа: Реальный режим. Описание: procedure OvrSetBuf(BufSize: Longint); Примечания: Параметр BufSize должен быть больше или равен начальному размеру оверлейного буфера и меньше или равен MemAvail + OvrGetBuf. Начальный размер оверлейного буфера представляет со- бой размер, возвращаемый процедурой OvrGetBuf перед обращениями к OvrSetBuf. Если заданный размер превышает текущий размер, то из начала динамически распределяемой области добавляется дополни- тельная память, и, таким образом, размер динамически распределяе- мой области памяти уменьшается. Если же заданный размер меньше текущего, то избыточное пространство присоединяется к динамически распределяемой области. Процедура OverSetBuf требует, чтобы динамически распределяе- мая область памяти была пустой. Если с помощью процедур New и GetMem уже выделены динамические переменные, то возникает ошибка. Поэтому необходимо убедиться в том, что процедура OvrSetBuf ис- пользуется перед вызовом процедуры InitGraph, поскольку процедура InitGraph выделяет память в динамически распределяемой области, после чего все обращения к процедуре OvrSetBuf игнорируются. Если для увеличения размера оверлейного буфера вы используе- те процедуру OvrSetBuf, то для соответствующего увеличения мини- мального размера динамически распределяемой области в программу необходимо также включить директиву компилятора $M. Возможные ошибки могут быть получены с помощью переменной OvrResult. Значение ovrOk говорит об успешном завершении, ovrError - о том, что процедура OvrInit завершилась неудачно или не была вызвана, что значение BufSize слишком мало или что для увеличения размера оверлейного буфера не хватает памяти. См. также: OvrGetBuf, OvrInit, OvrInitEMS, OvrResult, конс- танты ovXXXX. Пример: {$M 17384,65536,655360} use Overlay; const ExtractSize = 49152; { 48K } begin OvrInit('EDITOR.OVR'); OvrSetBuf(OvrGetBuf + ExtactSize); end. Процедура OvrSetRetry модуль Overlay ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает размер пробной области в оверлей- ном буфере. Целевая платформа: Реальный режим. Описание: procedure OvrSetRetry(Size: Longint); Примечания: Если после размещения оверлея в буфере до конца буфера остается Size байт, он автоматически помещается в пробную область. Любое свободное пространство в оверлейном буфере расс- матривается как часть пробной области. В целях совместимости с более ранними версиями администратора оверлеев по умолчанию проб- ная область имеет нулевой размер, что приводит к запрету механиз- ма проб/повторов. Эмпирической формулы для определения оптимального размера пробной области не существует, однако эксперименты показывают, что наилучшие результаты дают значения от 1/3 до 1/2 оверлейного буфера. См. также: OvrGetRetry. Пример: OvrInit'PROG.OVR'); OvrSetBuf(BufferSize); OvrSetRetry(BufferSize div 3); Процедура PackTime модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует запись DateTime (дата и время) в че- тырехбайтовое значение, конвертируя длинный целый тип представле- ния даты и времени, используемый процедурой SetTime. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: { DOS } procedure PackTime(var DT: DateTime; var Time: Longint); { Windows } procedure PackTime(var DT: TDateTime; var Time: Longint); Примечания: Запись DateTime описана в модуле Dos. Для полей данной записи не выполняется проверка на правильность границ. Ес- ли вы пишете программу, используя модуль WinDos, применяйте тип TDateTime. См. описание данного типа. См. также: UnPackTime, GetTime, SetTime, GetFTime, SetFTime. Функция ParamCount модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает число параметров, переданных в ко- мандной строке. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function ParamCount: Word; Примечания: Разделителями служат пробелы и символы табуля- ции. См. также функцию ParamStr. Пример: { в Windows используйте WinCrt } begin if ParamCount < 1 then Writeln('В командной строке нет параметров'); else Writeln(ParamCount,' параметров'); end. Функция ParamStr модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает заданный параметр командной строки. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function РаrамStr(Indx): String; Примечания: Параметр Indx представляет собой выражение типа Word.. Данная функция возвращает из командной строки параметр, номер которого задается параметром Indx, или пустую строку, если Indx равняется нулю или больше, чем РаrамCоunt. См. также: ParamCount. Пример: { в Windows используйте WinCrt } var i : word; begin for i := 1 to ParamCount do Writeln(PaamStr(i)); end. Функция Pi модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает значение 3.1415926535897932385 (зна- чение числа Pi). Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function Pi: Real; Примечания: В зависимости от того, работает ли компилятор в режиме с сопроцессором 8087 (80287, 80387), или только в режиме программного обеспечения, точность может меняться. Процедура PieSlice модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Рисует и заполняет цветом сектор круга. Точка (Х,Y) при этом используется в качестве центра окружности, а сек- тор рисуется от начального угла (SStart) до конечного угла (SEnd). Целевая платформа: Реальный режим. Защищенный режим. Описание: procedure PieSlice(X, Y: Integer; SStart, SEnd, R: Word); Примечания: Контур сектора вычерчивается текущим цветом, а при закрашивании используются тип и цвет закраски, заданные про- цедурами SetFillStyle и SetFillPattern. В каждом графическом драйвере содержится коэффициент относи- тельного удлинения, который используется в процедурах Circle, Arс и РieSlice. Начальный угол, равный 0 и конечный угол, равный 359, задают вычерчивание полной окружности. Ограничения: Должен использоваться графический режим. См. также: Arc, Circle, Ellipse, GetArcCoords, GetAspectRatio, Sector, SetFillStyle, SetFillPattern, SetGraphBufSize. Пример: uses Graph; const Radius = 30; var Gr, Gm : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); PieSlice(100, 100, 0, 270, Radius); Readln; CloseGraph; end. Функция Pos модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Ищет подстроку в строке. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function Pos(Sub, S: String): Byte; Примечания: Параметры Sub и S являются выражениями строково- го типа. Данная функция ищет подстроку, заданную параметром Sub, в строке S и возвращает целое значение, являющееся позицией пер- вого символа подстроки в строке S. Если подстрока не найдена, то функция возвращает значение 0. См. также: Concat, Copy, Delete, Insert, Length. Пример: var s : string; begin s := ' 123.5'; { преобразует пробелы в нули } while Pos(' ',s) > 0 do s[Pos(' ',s)] := '0'; end. Функция Pred модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает предшествующее значение аргумента. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function Pred(x); Примечания: Параметр x - выражение перечислимого типа. Ре- зультат, имеющий тот же тип, что и x, является предшествующим значением x. См. также: Succ, Dec. Функция Ptr модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует адрес, заданный в виде базового сег- мента и смещения, в значение типа указатель. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function Ptr(Seg, Offs: Word): Pointer; Примечания: Параметры Seg (сегмент) и Offs (смещение) предс- тавляют собой выражения типа Word. Результатом является указатель на адрес, заданный параметрами Seg и Offs. Как и указатель типа nil, результат функции Рtr совместим по присваиванию с указателя- ми любых типов. Результат функции можно проанализировать, например: if Prt($40, $49)^ = 7 then Writeln('видеорежим = моно'); См. также: Addr. Пример: var p^ : byte; begin p := Ptr($0040, $49); Writeln('Текущим видеорежимом является ', p^); end; Процедура PutImage модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выводит из буфера на экран двоичный образ задан- ной области экрана. Целевая платформа: Реальный режим. Защищенный режим. Описание: procedure PutImage(х, у: Integer; var Mass; Oper: Word); Примечания: Точка с координатами (х,у) определяет верхний левый угол прямоугольной области экрана. Параметр Mass является нетипизированным параметром, который определяет ширину и высоту области экрана. Параметр Oper определяет, какая двоичная операция будет использоваться для вывода двоичного образа области на эк- ран (см. перечень операций BitBlt). Каждая константа соответствует двоичной операции. Например, PutImage(x,y,BitMap,NormalPut) выводит на экран двоичный образ, сохраненный в массиве BitMap, начиная с точки (x,y). При этом для вывода каждого байта двоичного образа используется инструкция ас- семблера МОV. Аналогично: PutImage(x,y,BitMap,XORPut); выводит на экран двоичный образ, сохраненный в массиве BitMap, начиная с точки (x,y). При этом для вывода каждого байта двоично- го образа используется инструкция ассемблера ХОR. Этот метод час- то используется для мультипликации и перемещения изображения по экрану. PutImage(x,y,BitMap,NotPut); инвертирует биты в BitMap и выводит двоичный образ, сохраненный в BitMap, начиная с точки (x,y). При этом для каждого байта двоич- ного образа используется инструкция ассемблера MOV. Таким обра- зом, двоичный образ при выводе получает негативное по отношению к исходному изображение. Заметим, что процедура PutImage никогда не выполняет отсече- ние изображения на границах текущей области просмотра. Более то- го, за одним исключением оно не отсекается также на границе всего экрана. В этом случае, если какая-либо часть изображения не поме- щается в поле экрана, оно вообще не выводится. В следующем приме- ре первый образ экрана будет выведен, а средние три вызова PutImage не приведут к выводу изображения. program NoClip; uses Graph; var Driver, Mode : integer; p : pointer; begin Driver := Detect; InitGraph(Driver, Mode, ''); if GraphResult <> grOk then Halt(1); SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn); GetMem(p, ImageSize(0, 0, 0, 99, 49)); PieSlice(50, 25, 0, 360, 45); GetImage(0, 0, 99, 49, p^); { ширина = 100, высота = 50 } ClearDevice; PutImage(GetMaxX - 99, 0, p^, NormalPut); { x + высота > GetMaxX } PutImage(-1, 0, p^, NormalPut); { -1,0 не находится на экране } PutImage(0, -1, p^, NormalPut); { 0,-1 не находится на экране } PutImage(0, GetMaxY - 30, p^, NormalPut) { выведет 31 "строку" } Readln; CloseGraph; end. В последнем обращении к PutImage высота отсекается по нижне- му краю экрана, и часть изображения выводится. Это единственный случай, когда процедура PutImage отсекает выводимое изображение. Ограничения: Должен использоваться графический режим. См. также: GetImage, ImageSize. Пример: uses Graph; var p : pointer; Size : word; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Bar(0, 0, GetMaxX, GetMaxY); Size := ImageSize(10,20,30,40); GetMem(p, Size); { выделить память в динамически распре- деляемой области } GetImage(10,20,30,40,p^); { считать двоичный образ } PutImage(100,100,p^,NormalPut); { скопировать двоичный образ } Readln; CloseGraph; end. Процедура PutPixel модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Строит элемент изображения в точке (x,y). Целевая платформа: Реальный режим. Защищенный режим. Описание: procedure PutPixel(x, y: Integer; Pixel: Word); Примечания: Строит в (x,y) точку, цвет которой определяется параметром Pixel. Ограничения: Должен использоваться графический режим. См. также: GetImage, GetPixel, PutImage. Пример: uses Graph; var p : pointer; Color : word; begin Gd := Detect; InitGraph(Gd, Gm, ''); ig GraphResult <> grOk then Halt(1); Color := GetMaxColor; Randomize; repeat PutPixel(Random(100),Random(100),Color); { строит "звездочки" } Delay(10); until KeyPressed; Readln; CloseGraph; end. Функция Random модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает случайное число. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function Random[ (Range: Word) ]; Примечания: Если параметр Range (диапазон) не задан, то ре- зультатом будет вещественное число x в диапазоне 0 <= х < 1. Если задан параметр Range, то он должен представлять собой выражение целого типа, а результатом будет случайное число длиной в слово в диапазоне 0 <= х < N, где N - значение, заданное параметром Range. Если параметр Range меньше или равен нулю, то возвращаемое значение будет равно нулю. Генератор случайных чисел Random должен инициализироваться обращением к процедуре Randomize. См. также: Randomize. Пример: uses Crt; begin Randomize; repeat { вывести текст со случайно выбранным цветом } TexAttr := Random(256); Write('!'); until KeyPressed; end. Процедура Randomize модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Инициализирует встроенный генератор случайных чисел случайным значением. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure Randomize; Примечания: Случайное значение получается от системного тай- мера. Число, получаемое в результате работы генератора случайных чисел, хранится в предописаной переменной с именем RandSeed. См. также: Random. Процедура Read (текстовые файлы) модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Считывает одно или более значений из текстового файла в одну или более переменных. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure Read( [ var f: Text; ] v1, [, v2,...,vn ] ); Примечания: Параметр f (если он указан) является файловой переменой, соответствующей текстовому файлу. Если он опущен, то подразумевается использование стандартной файловой переменной Input. Каждый параметр v является переменной символьного, строко- вого, целого или вещественного типа. * В случае строкового типа процедура Rеаd считывает из файла один символ и присваивает его переменной. Если перед вы- полнением процедуры Rеаd функция Eof(f) принимала значение Truе, то переменной присваивается значение Chr(26) (символ Ctrl-Z). Если функция Eoln(f) принимала истинное значение (Truе), то переменной присваивается значение Chr(3) (сим- вол возврата каретки). Следующая операция Rеаd начнется со следующего символа в файле. * В случае переменной целого типа процедура Rеаd ожидает поступления последовательности символов, образующих число со знаком (синтаксис см. в разделе "Числа" Главы 2 "Руко- водства по языку"). Любые пробелы, знаки табуляции или метки конца строки, предшествующие числовой строке, про- пускаются. Считывание прекращается при обнаружении первого пробела, символа табуляции или метки конца строки, которые следуют за числовой строкой, или в том случае, если функ- ция Eof(f) принимает значение Truе. Если числовая строка не соответствует ожидаемому формату, то происходит ошибка ввода-вывода. В противном случае переменной присваивается значение. Если функция Eof(f) перед выполнением процедуры Rеаd имела значение Truе, или функция Eof(f) приняла зна- чение Truе при пропуске начальных пробелов, знаков табуля- ции или меток конца строки, то переменной присваивается нулевое значение. Следующая операция Rеаd начнется с про- бела, символа табуляции или метки конца строки, которыми завершилась числовая строка. * В случае переменной вещественного типа процедура Rеаd ожи- дает поступления последовательности символов, которые об- разуют число (синтаксис см. в разделе "Числа" Главы 2 "Ру- ководства по языку"), но шестнадцатиричное представление не допускается. Любые пробелы, знаки табуляции или метки конца строки, предшествующие числовой строке, пропускают- ся. Считывание прекращается при обнаружении первого пробе- ла, символа табуляции или метки конца строки, которые сле- дуют за числовой строкой, или в том случае, если функция Eof(f) принимает значение Truе. Если числовая строка не соответствует ожидаемому формату, то происходит ошибка ввода-вывода. В противном случае переменной присваивается значение. Если функция Eof(f) имела значение Truе перед выполнением процедуры Rеаd, или функция Eof(f) приняла значение Truе при пропуске начальных пробелов, знаков та- буляции или меток конца строки, то переменной присваивает- ся нулевое значение. Следующая операция Rеаd начнется с пробела, символа табуляции или метки конца строки, которы- ми завершилась числовая строка. * В случае переменной строкового типа процедура Rеаd считы- вает все символы, вплоть до следующей метки конца строки (но не включая ее), или пока функция Eof(f) не примет зна- чение Truе. Переменной присваивается получившаяся в ре- зультате символьная строка. Если длина результирующей строки превышает длину, максимально допустимую для строко- вой переменной, то она усекается. Следующая операция Rеаd начинается с метки конца строки, которой завершилась пре- дыдущая строка. * Когда разрешен расширенный синтаксис, Read можно использо- вать для считывания строк с завершающим нулем в соответс- твующие массивы. При наличии символьного массива вида array[0..N] of Char Read считывает до N символов, или пока Eoln(F) или Eof(F) не примут значение True, а затем добав- ляют к строке нулевой завершающий символ NULL (#0). При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Процедура Rеаd со строковой переменной не дела- ет после считывания пропуск до следующей строки. Поэтому для счи- тывания последовательности строк нельзя использовать последова- тельные обращения к процедуре Rеаd, поскольку при этом вы никогда не перейдете дальше первой строки. После первого обращения к про- цедуре Rеаd последующие операции Rеаd будут обнаруживать метку конца строки и возвращать строку нулевой длины. Поэтому для счи- тывания последовательности строк используйте обращения к процеду- ре Rеаdln. См. также: Readln, ReadKey, Write, Writeln. Процедура Read (типизированные файлы) модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Считывает в переменную элемент файла. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure Read(f, v1, [, v2,...,vn]); Примечания: Параметр f является файловой переменной, соот- ветствующей любому типу файла, кроме текстового, а каждый элемент v представляет собой переменную того же типа, что и элемент файла f. При каждом считывании в переменную текущая позиция в файле продвигается к следующему элементу. Попытка считывания следующего элемента файла в тот момент, когда текущая позиция файла находит- ся в конце файла (то есть когда Eof(f) имеет значение Truе) явля- ется ошибкой. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Файл должен быть открыт. См. также: Write. Функция ReadBuf модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Считывает из окна CRT строку. Целевая платформа: Windows. Описание: function ReadBuf(Buffer: PChar; Count: Word): Word; Примечания: Параметр Buffer указывает на буфер строки, в ко- тором может поместиться до Count символов. Можно ввести до Count - 2 символов, а при нажатии пользователем клавиши Enter автомати- чески добавляется маркер конца строки (#13 и #12). Если CheckEOF равно True, пользователь может также завершить строку ввода, на- жав клавиши Ctrl+Z. К строке в этом случае добавится маркер конца файла (#26). Возвращаемым значением будет число считанных симво- лов, включая маркер конца файла. См. также ReadKey. Функция ReadKey модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Считывает символ с клавиатуры. Целевая платформа: Реальный режим. Защищенный режим. Описание: function ReadKey: Char; Примечания: Считываемый символ не отображается на экране. Если перед обращением к функции RеаdКеу функция КеyРressed имела значение Truе, то символ считывается немедленно, в противном слу- чае функция ожидает нажатия клавиши. Специальные клавиши на клавиатуре компьютера РС генерируют расширенные коды клавиш. Специальными клавишами являются функцио- нальные клавиши, клавиши управления курсором, клавиши Alt и т.д. При нажатии специальной клавиши функция RеаdКеу возвращает снача- ла нулевой символ (#0), а затем расширенный код клавиши. Нулевые символы не могут быть получены никаким другим путем. Этим обеспе- чивается то, что следующим символом будет расширенный код клави- ши. В следующем фрагменте программы в переменную с именем Ch считывается символ или расширенный код клавиши и для переменной FuncKey булевского типа устанавливается значение Truе, если сим- вол является кодом специальной клавиши. Ch := ReadKey; if Ch <> #0 then FuncKey := False else begin FuncKey := True; Ch := ReadKey; end; Переменная ChесkВrеаk управляет тем, будет ли программа прекращать работу при нажатии клавиш Ctrl+Вrеаk, или они будут рассматриваться, как любые другие клавиши. Когда переменная ChесkВrеаk имеет значение False, функция ReаdКеy возвращает для клавиш Ctrl+Вrеаk значение Ctrl+С (#3). См. также: KeyPressed. Функция ReadKey модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Считывает символ с клавиатуры. Целевая платформа: Windows Описание: function ReadKey: Char; Примечания: Функция ReadKey поддерживает только стандартные коды ASCII. Расширенные коды клавиш, например, клавиш управления курсором, не поддерживаются. См. также: KeyPressed. Процедура ReadLn модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выполняет процедуру Rеаd, затем переходит к сле- дующей строке файла. Целевая платформа: Реальный режим. Защищенный режим, Windows Описание: procedure Readln([ var f: Text; ] v1 [, v2,...,vn ] ); Примечания: Процедура RеаdLn является расширением процедуры Rеаd и определена для текстовых файлов. После выполнения процеду- ры Rеаd процедура RеаdLn делает пропуск до начала следующей стро- ки. Вызов функции RеаdLn(f) без параметров приводит к перемеще- нию текущей позиции файла на начало следующей строки (если она имеется, в противном случае происходит переход к концу файла). Функция RеаdLn без списка параметров полностью соответствует об- ращению RеаdLn(Input). При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Функция работает только для текстовых файлов, включая стандартный ввод. Файл должен быть открыт для ввода. См. также: Read. Процедура Rectangle модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Рисует прямоугольник, используя текущий цвет и тип строки. Целевая платформа: Реальный режим. Защищенный режим. Описание: procedure Rectangle(x1, y1, x2, x2: Integer); Примечания: Точка с координатами (х1,у1) определяет верхний левый угол прямоугольника, а точка с координатами (х2,у2) опреде- ляет нижний правый угол (0 <= х1 < х2 <= GetМахХ и 0 <= у1 < у2 <= GetМахY). При вычерчивании прямоугольника будут использоваться текущий тип строки и цвет, которые устанавливаются процедурами SetLineStyle и SetColor. Чтобы определить, копируется ли прямоу- гольник на экран, или для его вывода используется операция XOR, вызовите SetWriteMode. Ограничения: Должен использоваться графический режим. См. также: Bar, Bar3D, GetViewSettings, InitGraph, SetColor, SetLineStyle, SetWriteMode, SetViewPort, GetViewSettings. Пример: uses Graph; var GraphDriver, GraphMode : integer; x1, y1, x2, y2 : integer; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); Randomize; repeat x1 := Random(GetMaxX); y1 := Random(GetMaxY); x2 := Random(GetMaxX - x1) + x1; y2 := Random(GetMaxY - y1) + y1; Rectangle(x1,y1,x2,y2); until KeyPressed; CloseGraph; end. Функция RegisterBGIdriver модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Регистрирует в графической системе загруженный пользователем или скомпонованный с программой драйвер формата BGI (формат фирмы Borland). Целевая платформа: Реальный режим. Защищенный режим. Описание: function RegisterBGIdriver(Driver: Pointer): Integer; Примечания: В случае ошибок возвращаемое значение меньше ну- ля. В противном случае возвращается внутренний номер драйвера. Эта программа позволяет пользователю загрузить файл драйвера и зарегистрировать драйвер, передав его адрес в памяти функции RegisterBGIdriver. После этого драйвер может непосредственно ис- пользоваться процедурой InitGraph, а не загружаться с диска моду- лем Graph. Драйвер пользователя можно загрузить с диска в динами- чески распределяемую область памяти или преобразовать в файл .OBJ (с помощью утилиты BINOBJ.EXE), после чего скомпоновать с прог- раммой в файл .EXE. Возможной возвращаемой ошибкой является grInvalidDriver (не- допустимый графический драйвер). Следующая программа загружает в динамически распределяемую область памяти драйвер CGA, регистрирует его в графической систе- ме и вызывает процедуру InitGraph. program LoadDriv; uses Graph; var Driver, Mode : Integer; DriverF : file; DriverP : pointer; begin { открыть файл драйвера, считать его в память и зарегистрировать } Assign(DriverF, 'CGA.BGI'); Reset(DriverF, 1); GetMem(DriverP, FileSize(DriverF)); if RegisterBGIdriver < 0 then begin Writeln('Ошибка регистрации драйвера: ', GraphErrorMSG(GraphResult)); Halt(1); end; { инициализация графики } Driver := CGA; Mode := CGAHi; InitGraph(Driver,Mode,''); if GraphResult <> grOk then Halt(1); OutText('Драйвер загружен программой пользователя'); Readln; CloseGraph; end. Эта программа начинает работу с загрузки драйвера CGA с дис- ка и регистрации его с помощью модуля Graph. Затем для инициали- зации графической системы выполняется обращение к процедуре InitGraph. Вы можете при желании разместить один или более файлов непосредственно в файле .EXE. При этом графические драйверы, ко- торые требуются вашей программе, окажутся встроенными и для рабо- ты потребуется только файл .EXE. Процесс размещения драйвера в выполняемом файле довольно прост и заключается в следующем: 1. Выполнить для файла (или файлов) программу BINOBJ. 2. Скомпоновать результирующие файлы *.OBJ с вашей програм- мой. 3. Перед вызовом процедуры Init зарегистрировать скомпоно- ванные файлы (файл) драйвера. Более подробное описание этого процесса можно найти в ком- ментариях, содержащихся в шапке программы-примера GRLINK.PAS на диске 3. Документация по утилите BINOBJ содержится в файле UTILS.DOC на дистрибутивном диске. Имеется также возможность регистрации в системе файлов шриф- тов (см. описание функции RegisterBGIfont). Ограничения: Заметим, что драйвер должен быть зарегистриро- ван перед обращением к процедуре InitGraph. Если функция RegisterBGIdriver вызывается, когда средства графики уже активи- зированы, то возвращается grError. См. также: InitGraph, InstallUserDriver, RegisterGBIfont. Функция RegisterBGIfont модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Регистрирует загружаемый пользователем или ском- понованный с программой шрифт формата BGI (формат фирмы Borland) в графической системе. Целевая платформа: Реальный режим. Защищенный режим. Описание: function RegisterBGIfont(Font: Pointer): Integer; Примечания: В случае ошибки возвращаемое значение будет меньше 0. В противном случае возвращается внутренний номер шриф- та. Эта программа позволяет пользователю загрузить файл шрифта и "зарегистрировать" шрифт Font, передав его адрес в памяти проце- дуре RegisterBGIfont. После этого данный шрифт можно выбирать с помощью обращения к процедуре SetTextStyle. Выбранный шрифт будет непосредственно использоваться без необходимости загрузки его с диска модулем Graph. Зарегистрированный пользователем шрифт можно загрузить с диска в динамически распределяемую область памяти или преобразовать (с помощью утилиты BINOBJ.EXE) в файл .OBJ, а затем скомпоновать с программой в выполняемый файл. Для загрузки и регистрации файлов шрифтов имеется несколько причин. Во-первых, модуль Graph в каждый момент времени хранит в памяти только один векторный шрифт. Если у вас имеется программа, которая должна быстро переключаться с одного шрифта не другой, то возможно вы предпочтете в начале программы выполнить регистрацию и загрузку шрифта. При этом при обращении к процедуре SetTextStyle модулю Graph не понадобится каждый раз загружать и разгружать шрифт. Во-вторых, вы можете захотеть разместить файл шрифта непос- редственно в файле .EXE. Таким образом, файл шрифта, который ис- пользует ваша программа, окажется встроенным, и для запуска прог- раммы потребуется только выполняемый файл (файл .EXE). Процесс размещения файла шрифта в выполняемом файле довольно прост: 1. Выполнить для файла (или файлов) программу BINOBJ. 2. Скомпоновать результирующие файлы ,OBJ с вашей програм- мой. 3. Перед вызовом процедуры Init зарегистрировать скомпоно- ванные файлы (файл) драйвера. Более подробное описание этого процесса можно найти в ком- ментариях, содержащихся в шапке программы-примера GRLINK.PAS на диске 3. Документация по утилите BINOBJ содержится в файле UTILS.DOC на дистрибутивном диске. Заметим, что в используемый по умолчанию шрифт (с битовой матрицей 8х8) встроен в модуль GRAPH.TPU и, таким образом, все время находится в памяти. При выборе и загрузке векторного шрифта ваша программа имеет возможность переключаться между используемым по умолчанию и векторным шрифтом без необходимости перезагружать какой-либо из них. Можно также регистрировать файлы драйверов (см. описание функции RegisterBGIdriver). Следующая программа загружает в динамически распределяемую область шрифт Triplex, регистрирует его в графической системе, а затем предоставляет возможность выбора между этим шрифтом и дру- гим штриховым шрифтом, который модуль Graph загружает с диска (SansSerifFont). program LoadFont; uses Graph; var Driver, Mode : integer; FontF : file; FontP : pointer; begin { открыть файл шрифта, считать его в память и зарегистрировать } Assign(FontF, 'TRIP.CHR'); Reset(FontF, 1); GetMem(FontP, FontP^, FileSize(FontF)); if RegisterBGIfont(FontP) < 0 then begin Writeln('Ошибка регистрации шрифта: ', GraphErrorMsg(GraphResult)); Halt(1); end; { инициализировать графику } Driver := Detect; InitGraph(Driver, Mode, '..\'); if GraphResult < 0 then Halt(1); Readln; { выбрать зарегистрированный шрифт } SetTextStyle(TriplexFont, HorizDir, 4); OutText('Программой загружен шрифт Triplex'); MoveTo(0, TextHeight('a')); Readln; { выбрать шрифт который должен быть загружен с диска } SetTextStyle(SanSerifFont, HorizDir, 4); OutText('Диск должен быть готов...'); MoveTo(0, GetY + TextHeight('a')); Readln; { выбрать зарегистрированный шрифт (уже загруженный в память)} SetTextStyle(TriplexFont, HorizDir, 4); OutText('Программой снова выбран шрифт Triplex'); Readln; CloseGraph; end. Программа начинает свою работу с загрузки с диска шрифта Triplex и регистрации его модулем Graph. Затем для инициализации графической системы вызывается процедура InitGraph. Проверьте, есть ли обращение к диску и нажмите клавишу Enter. Поскольку те- перь шрифт Triplex уже загружен в память и зарегистрирован, моду- лю Graph не надо считывать его с диска (таким образом, отпадает необходимость обращения к дисководу). Затем программа активизиру- ет шрифт SansSerifFont, загружая его с диска (он не зарегистриро- ван). Снова нажмите клавишу Enter и посмотрите, есть ли обращение к диску (при обращении к диску загорается лампочка-индикатор на панели компьютера). Наконец, программа снова выбирает шрифт Triplex. Поскольку он уже зарегистрирован, то при этом программа, когда вы нажмете клавишу Enter, обращаться к диску не будет. См. также: InitGraph, InstallUserDriver, InstallUserFont, RegisterGBIfont, SetTextStyle. Процедура RemoveDir модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Удаляет пустой подкаталог. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure RemoveDir(Dir: PChar); Примечания: Удаляется подкаталог по маршруту, заданному па- раметром Dir. Об ошибках (таких как несуществующий каталог или непустой каталог) сообщается в переменной DosError. Пустой подкаталог удаляет также подпрограмма RmDir, но вмес- то строки с завершающим нулем она воспринимает строку Паскаля. См. также: GetCurDir, GreateDir, SetCurDir. Процедура Rename модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Переименовывает внешний файл. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure Rename(var f; NewName); Примечания: Параметр f представляет собой файловую перемен- ную, соответствующую любому файловому типу. Параметр NewName яв- ляется выражением строкового типа или типа PChar (если разрешен расширенный синтаксис). Внешнему файлу, связанному с переменной f, присваивается новое имя, заданное параметром NewName. Дальней- шие операции с f будут выполняться с внешним файлом с новым име- нем. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Процедура Rename не должна использоваться для открытого файла. См. также: Erase. Процедура Reset модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Открывает существующий файл. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure Reset(f [: file; Size : Word ] ); Примечания: Параметр f является файловой переменной, соот- ветствующей любому типу файла. Он должен быть связан с внешним файлом с помощью процедуры Assign. Параметр размера Size предс- тавляет собой необязательное выражение длиной в слово и может указываться только в том случае, если f является нетипизированным файлом. Процедура Reset открывает существующий внешний файл, имя ко- торого было присвоено f. Если внешний файл с указанным именем от- сутствует, то это является ошибкой. Если файл f уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция в файле устанавливается на начало файла. Если f было присвоено пус- тое имя (например, Assign(f'')), то после обращения к процедуре Reset f будет ссылкой на стандартный файл ввода (стандартный ка- нал 0). Если f - текстовый файл, то он становится доступным только по чтению. После обращения к процедуре Reset Eof(f) принимает значение Truе, если файл пуст, и значение False в противном слу- чае. Если f является нетипизированным файлом, то параметр Size определяет размер записи, который должен использоваться при пере- даче данных. Если этот параметр опущен, то он подразумевается равным по умолчанию 128 байтам. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. См. также: Append, Assign, Close, Rewrite. Пример: function FileExists(FileName: string) : boolean; { булевская функция, возвращающая значение Truе, если файл существует и значение False в противном случае } var f : file; begin {$I-} Assign(f, FileName); Reset(f); Close(f); {I+} FileExists := (IOResult = 0) and (FileName <> ''); end; { FileExists }; begin if FileExists(ParamStr(1)) then { получить из командной строки имя файла } Writeln('Файл существует'); else Writeln('Файл не найден'); end. Процедура RestoreCrtMode модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает режим экрана в исходное состояние (то, какое существовало до инициализации графики). Целевая платформа: Реальный режим. Защищенный режим. Описание: procedure RestoreCrtMode; Примечания: Восстанавливает исходный видеорежим, обнаружен- ный процедурой InitGraph. Данная процедура может использоваться вместе с процедурой SetGraphMode для переключения между текстовым и графическим режимом. Ограничения: Должен использоваться графический режим. См. также: CloaseGraph, DetectGraph, InitGraph, SetGraphMode. Пример: uses Graph; var GraphDriver, GraphMode : integer; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); OutText('Для выхода из графики нажмите Enter:'); Readln; RestoreCrtMode; Writeln('Теперь вы в текстовом режиме'); Readln; SetGraphMode(GetGraphMode); OutTextXY(0, 0, 'Вы снова в графическом режиме'); OutText(0, TextHeight('H'), 'Для выхода нажмите Enter'); Readln; CloseGraph; end. Процедура Rewrite модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает и открывает новый файл. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure Rewrite(f [ : file; Size: Word ] ); Примечания: Параметр f является файловой переменной, соот- ветствующей любому типу файла. Он должен быть связан с внешним файлом с помощью процедуры Assign. Параметр размера Size предс- тавляет собой необязательное выражение длиной в слово и может указываться только в том случае, если f является нетипизированным файлом. Если этот параметр опущен, то подразумевается размер за- писи в 128 байт. Процедура Rewrite создает новый внешний файл, имя которого присвоено f. Если внешний файл с указанным именем уже существует, то он удаляется, и на его месте создается новый пустой файл. Если файл f уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция в файле устанавливается на начало файла. Если f было присвоено пустое имя (например, Assign(f,'')), то после обращения к процедуре Reset(f) будет ссылкой на стандартный файл ввода (стандартный описатель файла номер 1). Если f - текстовый файл, то он становится доступным только по записи. После обращения к процедуре Rewrite Eof(f) принимает значение Truе, если файл пуст, и значение False в противном слу- чае. Если f является нетипизированным файлом, то параметр Size определяет размер записи, который должен использоваться при пере- даче данных. Если этот параметр опущен, то он подразумевается равным по умолчанию 128 байтам. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. См. также: FileMode, Truncate, Lst, Reset, Append, Assign. Пример: { в Windows используйте WinCrt } var f : text; begin Assign(f,'NEWFILE,$$$'); Writeln(f,'Создается файл, в который записывается эта', ' строка'); Close(f); end. Процедура RmDir модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Удаляет пустой подкаталог. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure RmDir(s: String); Примечания: Параметр s является выражением строкового типа. Удаляется подкаталог с путем доступа, заданным строкой s. Если путь доступа не существует, является непустым или если он задает текущий каталог, то происходит ошибка ввода-вывода. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Пустой подкаталог удаляет также подпрограмма RemoveDir, но вместо строки Паскаля она воспринимает строку с завершающим ну- лем. См. также: RemoveDir, MkDir, ChDir, GetDir. Пример: { в Windows используйте WinCrt } begin {$I-} { получить имя каталога из командной строки } RmDir(ParamStr(1)); if IOResult <> 0 then Writeln('Каталог удалить нельзя'); else Writeln('Каталог удален'); end. Функция Round модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Округляет значение вещественного типа до значе- ния целого типа. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: function Round(x: Real): Longint; Примечания: Параметр x представляет собой выражение вещест- венного типа. Функция Round возвращает значение длинного целого типа, которое является значением x, округленным до ближайшего це- лого числа. Если значение x находится точно посередине между дву- мя целыми числами, то результатом будет число с большим абсолют- ным значением. Если округленное значение x не соответствует диапазону представления длинного целого типа, то во время выпол- нения происходит ошибка. См. также: Trunc, Int. Процедура RunError модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Останавливает выполнение программы и генерирует ошибку этапа выполнения. Целевая платформа: Реальный режим. Защищенный режим, Windows. Описание: procedure RunError [ (ErrCode : Word ) ]; Примечания: Процедура RunError аналогична процедуре Halt, но в дополнение к остановке программы она генерирует на текущем опе- раторе ошибку этапа выполнения. Параметр ErrCode представляет со- бой номер ошибки этапа выполнения (0 опущен). Если текущий модуль был скомпилирован с установленным параметром Debug Information (Отладочная информация), и вы запускаете программу из среды инте- рактивной отладки IDE, то Borland Pascal обрабатывает обращение к RunError, как обычную ошибку этапа выполнения. См. также: Halt. Пример: {$IFDEF Debug} if P = nil then RunError(204); {$EDNIF} Процедура ScrollTo модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Прокручивает окно CRT для вывода ячейки вирту- ального экрана с координатами левого верхнего угла (X,Y). Целевая платформа: Windows. Описание: procedure ScrollTo(X, Y: Integer); Примечания: Ячейка с координатами (0,0) соответствует верх- нему левому углу виртуального экрана. Процедура Sector модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Вычерчивает и заполняет эллиптический сектор. Целевая платформа: Реальный режим, защищенный режим. Целевая платформа: Windows. Описание: procedure Sector(X, Y: Integer; SStart, SEnd XRad, YRad: Word); Примечания: Процедура использует (X,Y) как точку центра, па- раметры XRad, YRad определяют, соответственно, горизонтальный и вертикальный радиусы. Сектор вычерчивается от начального угла SStart до конечного угла SEnd. Сектор рисуется текущим цветом и закрашивается с использованием образца закраски и цвета, заданных с помощью процедур SetFillStyle или SetFillPattern. Если задан начальный угол 0 и конечный угол 360, то будет нарисован и закрашен полный эллипс. Углы для процедур Arc, Ellipse, FillEllipse, PieSlice задаются против часовой стрелки, при этом углу 0 соответствует 3 часа, 90 градусов - 12 часов и т. д. Если при заполнении сектора происходит ошибка, то функция GraphResult возвращает значение grNoScanMem. Ограничения: Должен использоваться графический режим. См. также: Arc, Circle, Ellipse, FillEllipse, GetArcCoords, GetAspectRatio, PieSlice, SetFillStyle, SetFillPattern, SetGraphBufSize. Пример: uses Graph; const R = 50; var Driver, Mode : integer; Xasp, Yasp : word; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); Sector(GetMaxX div 2, GetMaxY div 2, 0, 45, R, R); GetAspectRatio(Xasp, Yasp); { нарисовать сектор круга } Sector(GetMAxX div 2, GetMaxY div 2, { точка центра } 180, 135, { зеркальное отображение выбран- ного ранее угла } R, R * LongInt(Xasp) div Yasp); Readln; CloseGraph; end. Процедура Seek модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Перемещает текущую позицию в файле к заданному элементу. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure Seek(f, n: Longint); Примечания: Параметр f является любой файловой переменной, кроме текстовой, а n представляет собой выражение целого типа. Текущая позиция в файле f перемещается к элементу с номером n. Номер первого элемента файла равен 0. Для того, чтобы расширить файл, можно выполнить поиск элемента файла, расположенного за последним элементом. То есть оператор Sееk(f,FileSize(f)) переме- щает текущую позицию в файле в конец файла. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Процедуру нельзя использовать для текстовых файлов. Файл должен быть открыт. См. также: FilePos. Функция SeekEof модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для файла состояние "конец файла" (end-of-file). Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function SeekEof [ (var f: Text) ]: Boolean; Примечания: За исключением того, что функция SееkEof пропус- кает все пробелы, знаки табуляции и метки конца строки, она пол- ностью соответствует функции Eof. Ее полезно использовать при считывании числовых значений из текстового файла. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Функцию можно использовать только для текстовых файлов. Файл должен быть открыт. См. также: Eof, SeekEoln. Функция SeekEoln модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для файла состояние "конец строки" (end-of-line). Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function SeekEoln [ (var f : Text) ]; Примечания: За исключением того, что функция SееkEоln про- пускает все пробелы и знаки табуляции, она полностью соответству- ет функции Eoln. Ее полезно использовать при считывании из текс- тового файла числовых значений. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Функцию можно использовать только для текстовых файлов. Файл должен быть открыт. См. также функции Eoln, SeekEof. Функция Seg модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает сегмент для указанного объекта. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function Seg(x): Word; Примечания: Параметр x представляет собой любую переменную или идентификатор процедуры или функции. Результат длиной в слово является адресом сегмента для x. См. также: Ofs, Addr. Процедура SetActivePage модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает для графического вывода активную страницу. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetActivePage(Page: Word); Примечания: Страница, заданная параметром Page, становится активной. Весь графический вывод будет теперь направляться в эту страницу. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetActivePage(Page: Word); Примечания: Страница, заданная параметром Page, становится активной. Весь графический вывод будет теперь направляться в эту страницу. Возможность использования нескольких страниц поддерживается только в графических адаптерах EGА (256K), VGА и Неrcules. При использовании нескольких графических страниц программа может вы- водить графическую информацию в страницу, не выводимую в данный момент на экран, а затем быстро вывести на экран этот двоичный образ, сменив отображаемую страницу с помощью процедуры SetVisualPage. Этот метод особенно полезен при программировании мультипликации. Ограничения: Должен использоваться графический режим. См. также: SetVisualPage. Пример: uses Graph; var GraphDriver, GraphMode : integer; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); begin ClearDivice; SetVisualPage(0); SetActivePage(1); Rectangle(10,20,30,40); SetVisualPage(1); end; else OutText('Страничный режим не поддерживается'); Readln; CloseGraph; end. Процедура SetAllPalette модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Изменяет все цвета палитры на указанные. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetAllPalette(var Palette); Примечания: Параметр Palette является нетипизированным пара- метром. Первое его слово представляет собой длину палитры. Следу- ющие n байт заменяют текущие цвета палитры. Каждый цвет может принимать значение от -1 до 15. Значение -1 не изменяет предыду- щее значение записи. Имейте в виду, что допустимые цвета зависят от текущего гра- фического драйвера и текущего графического режима. При передаче SetAllPalette недопустимого ввода GraphResult возвращает значение -11 (rgError), и изменений в значении палитры не происходит. Изменения, вносимые в палитру, немедленно отображаются на экране. При любом изменении цвета палитры все места на экране, где этот цвет используется, будут изменены в соответствии с вновь заданным значением. См. описание констант цветов для SetRGBPalette, где вы най- дете определение констант цветов и записи PaletteType. Ограничения: Должен использоваться графический режим. Может использоваться с EGA, EGA64 или VGA (но не с IBM 8514 или VGA с 256-цветным режимом). См. также: GetBkColor, GetColor, GetPalette, SetBkColor, SetColor, SetPalette, SetRGBPalette. Пример: uses Graph; var GraphDriver, GraphMode : integer; Palette : PaletteType; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); begin Line(0, 0, GetMaxX, GetMaxY); with Palette do begin Size := 4; Colors[0] := LightCyan; { светло-голубой } Colors[1] := Red; { красный } Colors[2] := Yellow; { желтый } Colors[3] := White; { белый } SetAllPalette(Palette); end; Readln; CloseGraph; end. Процедура SetAspectRatio модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Изменяет принятое по умолчанию значение коэффи- циента относительного удлинения. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetAspectRatio(Xasp, Yasp: Word); Примечания: Процедура SetAspectRatio применяется для измене- ния принятого по умолчанию для текущего графического режима коэф- фициента относительного удлинения. Коэффициент относительного уд- линения используется при вычерчивании окружностей. Если окруж- ность выглядит эллиптической, значит монитор не настроен должным образом. Его можно настроить с помощью аппaратных средств или программным путем, изменив с помощью процедуры SetAspectRatio ко- эффициент относительного удлинения. Для получения текущего коэф- фициента относительного удлинения можно использовать процедуру GetAspectRatio. Ограничения: Должен использоваться графический режим. См. также: GetAspectRatio. Пример: uses Crt, Graph; const R = 50; var Driver, Mode: integer; Xasp, Yasp: word; begin DirectVideo := false; Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult <> 0 then Halt(1) GetAspectRatio(Xasp, Yasp); { получить используемый по умолчанию коэффициент отно- сительного удлинения } { Настроить на VGA и 8514. При этом коэффициент относительного удлинения = 1.1 } if Xasp = Yasp then Xasp := 5 * Xasp; { Продолжить изменение значения коэффициента относительного удлинения до получения 1:1 или пока не будет нажата клавиша } while (Xasp < Yasp) and not KeyPressed do begin GetAspectRatio(Xasp, Yasp); Circle(GatMaxX div 2, GetMaxY div 2, R); Inc(Xasp, 20); end; SetTextJustify(CenterText, CenterText); OutTextXY(GetMaxX div 2, GetMaxY div 2, 'Выполнено!'); Readln; CloseGraph; end. Процедура SetBkColor модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Используя палитру устанавливает текущий фоновый цвет. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetBkColor(Color: Word); Примечания: SetBkColor(0) задает использование первого цвета палитры в качестве текущего фонового цвета. Фоновые цвета могут принимать значения в диапазоне от 0 до 15, в зависимости от теку- щего графического драйвера и текущего графического режима. Для адаптера CGA данная процедура задает цвет развертки. Например, в режиме CGAC1 палитра содержит четыре цвета: чер- ный, красный, желтый и зеленый. SetBkColor(0) выбирает в качестве фонового цвета черный, значение 1 задает красный цвет и т.д. Ограничения: Должен использоваться графический режим. См. также: GetBkColor, GetColor, GetPalette, SetAllPalette, SetColor, SetPalette. Пример: uses Crt, Graph; var GraphDriver, GraphMode : integer; Palette : PaletteType begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); Randomize; If GraphResult <> grOk then Halt(1); GetPalette(Palette); repeat SetBkColor(Random(Palette.Size)); LineTo(Random(GetMatX),Random(GetMatY)); until KeyPressed { для выхода нажмите клавишу } CloseGraph; end. Процедура SetCBreak модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает проверяемое операционной системой DOS состояние Ctrl+Break. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetCBreak(Break: Boolean); Примечания: Данная процедура устанавливает проверяемое DOS состояние Ctrl+Break. Когда это состояние выключено (False), DOS проверяет Ctrl+Break только во время выполнения ввода-вывода на консоль, устройство печати или порты. Во включенном состоянии (True) проверки выполняются при каждом системном выводе. См. также: GetCBreak. Процедура SetColor модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Используя палитру устанавливает текущий цвет ри- сунка (Color). Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetColor(Color: Word); Примечания: SetColor(0) задает использование первого цвета палитры в качестве текущего цвета рисунка. Цвета рисунка могут принимать значения в диапазоне о 0 до 15, в зависимости от ис- пользуемого графического драйвера и графического режима. Наибольший допустимый цвет для текущего драйвера и режима возвращает подпрограмма GetMaxColor. Ограничения: Должен использоваться графический режим. См. также: DrawPoly, SetRGBPalette, GetBkColor, GetColor, GetPalette, SetAllPalette, GetColor, SetPalette. Пример: uses Crt, Graph; var GraphDriver, GraphMode : integer; Palette : PaletteType begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); Randomize; If GraphResult <> grOk then Halt(1); GetPalette(Palette); repeat SetBkColor(Random(Palette.Size)); LineTo(Random(GetMatX),Random(GetMatY)); until KeyPressed; end. Процедура SetCurDir модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Изменяет текущий каталог на маршрут, заданный параметром Dir. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetCurDir(Dir: PChar); Примечания: Если Dir задает буквенную метку диска, то теку- щий диск также изменяется. Об ошибках сообщается в DosError. Те же функции, что и SetCurDir, выполняет подпрограмма ChDir, но вместо строки с завершающим нулем она воспринимает строку Паскаля. См. также: GetCurDir, GreateDir, RemoveDir. Процедура SetDate модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает текущую дату в операционной систе- ме. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure SetDate(var Y, M, D, Dw: Word); Примечания: Возвращаемые значения имеют следующие допустимые диапазоны: Y (год) - 1980..2099, M (месяц) - 1..12, D (число) 1..31, Dw (день недели) - 0..6 (где значение 0 соответствует воскресенью). Если дата указана неверно, то запрос игнорируется. См. также: GetDate, GetTime, SetTime. Процедура SetFAttr модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает атрибуты файла. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure SetAttr(var f; Attr: Word); Примечания: Параметр f должен представлять собой файловую переменную (соответствующую типизированному, нетипизированному или текстовому файлу) для которого должно быть выполнено присваи- вание файловой переменой, но который не должен быть открыт. Фор- мирование атрибутов выполняется путем добавления соответствующих масок, заданных в виде констант в модуле Dos (см. константы атри- бутов файла). Коды ошибок можно получить с помощью функции DosError. Воз- можными кодами ошибок являются код 3 (недопустимый маршрут) и код 5 (доступ к файлу запрещен). Ограничения: Файл не может быть открыт. См. также: GetFAttr, GetFTime, SetFTime. Пример: { в Windows используйте модуль WinCrt } uses Dos; var f : file; begin Assign(f,'C:\AUTOEXEC.BAT'); SetFAttr(f, Hidden); { или faHidden под Windows } Readln; SetFAttr(f, Archive); { или faArchive под Windows } end. Процедура SetFillPattern модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выбирает заданный пользователем образец закрас- ки. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetFillPattern(Pattern: FillPatternType; Color: Word); Примечания: Устанавливает тип закраски и ее цвет для всех типов закраски, выполняемых процедурами FillPoly, Bar, FloodFill, Bar3D и PieSlice, битовый образец закраски, задаваемый процедурой Pattern, и цвет, задаваемый процедурой Color. Тип FillPatternType определен в модуле Graph. Образец закраски основывается на внутренних байтовых значе- ниях, содержащихся в массиве Pattern. Этот массив имеет длину 8 байт, и каждый байт соответствует 8 элементам изображения в об- разце закраски. Если бит в байте образца закраски принимает зна- чение 1, то элемент изображения будет построен. Следующий образец закраски представляет собой, например, закраску в виде "шахматной доски" (50% полутон): ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї і Двоичный вид Шестнадцатиричный вид і ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і 10101010 = $AA (первый байт) і і 01010101 = $55 (второй байт) і і 10101010 = $AA (третий байт) і і 01010101 = $55 (четвертый байт) і і 10101010 = $AA (пятый байт) і і 01010101 = $55 (шестой байт) і і 10101010 = $AA (седьмой байт) і і 01010101 = $55 (восьмой байт) і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Определенные пользователем типы закраски позволяют вам соз- давать типы закраски, отличающиеся от заранее определенных, кото- рые могут выбираться с помощью процедуры SetFillStyle. Всякий раз, когда вы выбираете новый образец закраски с помощью процедур SetFillPattern или SetFillStyle все операции закраски будут вы- полняться с использованием этого типа закраски. При обращении ви- да SetFillStyle(UserField, SomeColor) всегда будет выбираться об- разец, заданный пользователем. Это позволяет вам определять и использовать с помощью процедуры SetFillPattern новый образец закраски, а затем переходить от встроенного образца закраски к новому, заданному вами, обращаясь к процедуре YetTextStyle. Ограничения: Должен использоваться графический режим. См. также: Bar, Bar3D, FillPoly, GetFillPattern, GetFillSettings GraphResult, константы grXXXX, PieSlice. Пример: uses Graph; const Gray50 : FillPatternType = ($AA, $55, $AA, $55, $AA, $55, $AA, $55); var Driver, Mode: integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult <> 0 then Halt(1) SetFillPattern(Gray50, White); Bar(0, 0, 100, 100); { нарисовать столбец, используя 50% полутон } Readln; CloseGraph; end. Процедура SetFillStyle модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает тип закраски и ее цвет. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetFillStyle(Pattern: Word; Color: Word); Примечания: Устанавливает образец Pattern и цвет Color зак- раски для всех видов закраски, выполняемых процедурами FillPoly, Bar, Bar3D, и PieSlice. Можно использовать множество типов зак- раски. По умолчанию выбирается сплошная закраска белого цвета. См. определение констант образцов закраски. Если процедуре SetFillStyle передан недопустимый ввод, то GraphResult возвращает значение grError, а текущая закраска не изменяется. Если Pattern равно UserFill, то активным образцом закраски становится образец, определенный пользователем (с по- мощью подпрограммы SetFillPattern). Ограничения: Должен использоваться графический режим. См. также: Bar, Bar3D, FillPoly, FillPatternType, GetFillSettings, PieSlice, GetMaxColor, GraphResult. Пример: SetFillStyle(SolidFill,0); Bar(x1, y1, x2, y2); SetFillStyle(XHatchFill,0); Bar(x1, y1, x2, y2); Процедура SetFTime модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает дату и время последней записи фай- ла. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure SetTime(var f; Time: Longint); Примечания: Параметр f должен быть файловой переменной, со- ответствующей типизированному, нетипизированному или текстовому файлу. Параметр времени Time можно сформировать с помощью обраще- ния к процедуре РасkТiме. Ошибки можно получить с помощью функции DosError. Единственно возможным кодом ошибки является код 6 (не- допустимый файловый канал). Ограничения: Файл f должен быть открыт. См. также: DosError, GetFTime, PackTime, UnPackTime, SetFAttr. Процедура SetGraphMode модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позволяет вам изменить размер буфера, используе- мого для закраски. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetGraphBufSise(BufSize: Word); Примечания: Для внутреннего буфера устанавливается размер, соответствующий параметру BufSize. Этот буфер выделяется в дина- мически распределяемой области памяти при обращении к процедуре InitGraph. По умолчанию буфер имеет размер 4К. Этого достаточно для за- полнения многоугольника штриховкой примерно из 650 линий. В неко- торых достаточно редких ситуациях может потребоваться изменить размеры буфера, чтобы избежать его переполнения. Ограничения: Если обращение к процедуре InitGraph уже было, то вызов процедуры SetGraphBufSize игнорируется. См. также: FloodFill, FillPoly, InitGraph. Процедура SetGraphMode модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает для системы графический режим и очищает экран. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetGraphMode(Mode: Integer); Примечания: Параметр Mode должен задавать для текущего драй- вера устройства допустимый графический режим. Данная процедура используется для выбора графического режима, отличного от того, который по умолчанию устанавливается процедурой InitGraph. Процедура SetGraphMode может также использоваться вместе с процедурой RestoreCrtMode для переключения между текстовым и гра- фическим режимами. Процедура SetGraphMode сбрасывает все графические параметры (текущий указатель, палитру, цвет, область просмотра и т.д.) в те значения, которые назначаются для них по умолчанию. Если делается попытка выбрать для текущего драйвера устройс- тва недопустимый режим, то функция GraphResult возвращает значе- ние -10 (grInvalidMode). См. описание констант драйвера и режима, а также список драйверов и режимов. Ограничения: Перед обращением к данной процедуре необходимо выполнить (с нормальным завершением) вызов процедуры InitGraph. См. также: ClearDevice, CloseGraph, DetectGraph, GetGraphMode, InitGraph, RestoreCrtMode, GraphResult, GetModeRange, константы драйвера и режима. Пример: uses Graph; var GraphDriver : integer; GraphMode : integer; LowMode : integer; HighMode : integer; begin GraphDriver := Detect; InitGraph(GraphDriver, GraphMode, ''); if GraphResult <> grOk then Halt(1); GetModeRange(GraphDriver, LowMode, HighMode); SetGraphMode(LowMode); { выбрать режим с низким разрешением } Line(0, 0, GetMaxX, GetMaxY); Readln; CloseGraph; end. Процедура SetIntVec модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает по указанному адресу заданный век- тор прерывания. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetIntVec(IntNum: Byte; Vec: Pointer); Примечания: Параметр IntNum задает номер вектора прерывания (0...255), а параметр Vec задает его адрес. Чтобы получить адрес процедуры обработки, прерываний параметр Vec часто задается с ис- пользованием оператора @. Предположим, что Int1BSave является пе- ременной типа указатель и Int1BHandler - идентификатор процедуры обработки прерываний. Тогда следующая последовательность операто- ров задает новый обработчик прерывания $В1, а затем восстанавли- вает исходный обработчик прерывания: GetIntVec($1B,Int1BSave); SetIntVec($1b,@Int1BHandler); . . . SetIntVec($1B,Int1BSave); Ограничения: В защищенном режиме DOS, а также в стандартном и улучшенном режимах Windows SetIntVec устанавливает вектор пре- рывания защищенного режима с заданным номером вектора прерывания. SetIntVec нельзя использовать для модификации векторов прерываний реального режима или векторов исключительных ситуаций защищенного режима. См. также: GetIntVec. Процедура SetLineStyle модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает текущую толщину S и тип линии SType. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetLineStyle(SType: Word; Pattern: Word; S: Word); Примечания: Данная процедура влияет на все типы линий, вы- черчиваемые процедурами Line, LineTo, RecTangle, DrawPoly, Arc, Circle и др. Могут вычерчиваться непрерывные, пунктирные линии, линии, состоящие из точек или точек и тире. Если процедуре SetLineStyle передаются неверные параметры, то GraphResult будет возвращать значение grError и текущие установки останутся неизме- ненными. См. константы типов линий. SType - это значение от SolidLn до IserBitLn(0..4). Если SType не равно UserBitLn, Pattern игнорируется. S - это NormWidth или ThickWidth. Когда SType равно UserBitLn, линия выводится с помощью 16-битового об- разца, определенного параметром Pattern. Например, если Pattern = $AAAA, то 16-битовый образец выглядит следующим образом 1010101010101010 { NormWidth } 1010101010101010 { ThickWidth } 1010101010101010 1010101010101010 Ограничения: Должен использоваться графический режим. См. также: SetLineStyle, Line, LineRel, LineTo, SetWriteMode, GraphResult. Пример: uses Graph; var GraphDriver, GraphMode : integer; x1, y1, x2, y2 : integer; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); x1 := 10; y1 := 10; x2 := 200; y2 := 150; SetLineStyle(DottedLn,0,NormVidth); Rectangle(x1,y1,x2,y2); SetLineStyle(UserBitLn,$C3,ThickWidth); Rectangle(Pred(x1), Pred(y1), Succ(x2), Succ(y2)); Readln; CloseGraph; end. Процедура SetPalette модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Изменяет один из цветов палитры в соответствии с параметрами N (номер цвета) и Color (цвет). Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetPalette(N: Word; Color: Shortint); Примечания: Изменяет в палитре запись N на Color. SetPalette (0,LightCyan) устанавливает в качестве первого цвета палитры светло-бирюзовый. В зависимости от текущего графического драйвера и текущего графического режима параметр N может принимать значе- ния от 0 до 15. При передаче SetPalette недопустимого ввода GraphResult возвращает значение grError. Внесенные в палитру изменения немедленно отображаются на эк- ране. В приведенном далее примере на экране рисуется несколько линий, затем палитра случайным образом изменяется. Каждый раз, когда изменяется цвет палитры, все места на экране, где использу- ется данный цвет, будут изменяться в соответствии с новым значе- нием. Ограничения: Должен использоваться графический режим. Может применяться только с EGA, EGA 64 или EGA (но не с IBM 8514). См. также: GetBkColor, GetColor, SetAllPalette, SetBkColor, SetColor, SetRGBPalette, GraphResult. Пример: uses Crt, Graph; var Graphriver, GraphMode : integer; Color : word; Palette : PaletteType; begin GraphDriver := Detect; InitGraph(GraphDriver, GraphMode,''); if GraphResult <> grOk then Halt(1); SetPalette(Palette); for Color := 0 to Pred(Palette.Size) do begin SetColor(Color); Line(Color, Color, Color*5, Color*5); end; Randomize; repeat; SetPalette(Random(Palette.Size), Random(Palette.Size)); until KeyPressed; end; else Line(0, 0, 100, 0); Readln; CloseGraph; end. Функция SetPrnFont модуль WinPrn ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Начинает печать, используя выбранный шрифт. Целевая платформа: Windows. Описание: function SetPrnFont(var F: Text; Font: HFont): HFont; Примечания: Функция SetPrnFont вызывает печать файла с ис- пользованием данного шрифта. Возвращается описатель шрифта, ис- пользуемого в данный момент принтером. Если возвращаемый описа- тель не предполагается использовать далее в программе, то его можно уничтожить, вызвав подпрограмму DeleteObject. Описатель шрифта можно создать с помощью функций API Windows CreateFont или CreateFontIndirect. Пример: program Test; uses WinTypes, WinProcs, WinCrt, WinPrn; Prn: Text; OldFont: HFont; begin Writeln(' Печать... '); AssingDefPrn(Prn); Rewrite(Prn); Writeln(Prn, 'Некоторый текст'); OldFont := SetPrnFont(Prn, CreateFont(100, 0, 0, 0, 0, 0, 0, 1, Old_Default_Precis, Clip_Default_Precis, Default_Quality, ff_Roman, nil); Writeln(Prn, 'Некоторый текст новым шрифтом'); DeleteObject(SetPrnFont(Prn, OldFont)); Writeln(Prn, 'Снова старый шрифт'); Close(Prn); Writeln('Выполнено'); end. См. также: AbortPrn, AssingDefPrn, AssingPrn, TitlePrn. Процедура SetRGBPalette модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позволяет изменить записи палитры для драйверов IBM 8514 и VGA. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure SetRGBPalette(N, RedVavue, GreenValue, BlueValue: Integer); Примечания: Параметр N задает запись палитры, которую нужно загрузить, а RedValue, GreenValue и BlueValue - цвета, составляю- щие запись палитры. Для дисплея IBM 8514 N принимает значения в диапазоне 0..255. Для VGA в цветном режиме и 256К N (номер цвета) принимает значения в диапазоне 0..15. Используется только младший байт RedValue, GreenValue и BlueValue и только 6 старших бит этого байта загружаются в палитру. Замечание: В целях совместимости с другими графическими адаптерами фирмы IBM драйвер BGI определяет первые 16 записей па- литры IBM 8514 для адаптеров EGA/VGA. Эти значения могут исполь- зоваться непосредственно или изменяться с помощью процедуры SetRGBPalette. Ограничения: Процедура SetGRBPalette может использоваться только при наличии графического адаптера VGA и драйвера IBM 8514. См. также: SetBkColopr, GetColor, GetPalette, GraphResult, SetAllPalette, SetBkColor, SetColor, SetPalette. Пример: uses Graph; type GRBRec = record RedVal, GreenVal, BlueVal : integer; end; const EGAColors : array[0..MaxColors] of GRBRec =( { Назв. Цвет } (RedVal:$00;GreenVal:$00;BlueVal:$00), {черный EGA 0} (RedVal:$00;GreenVal:$00;BlueVal:$FC), {голуб. EGA 1} (RedVal:$24;GreenVal:$FC;BlueVal:$24), {зелен. EGA 2} (RedVal:$00;GreenVal:$FC;BlueVal:$FC), {бирюз. EGA 3} (RedVal:$FC;GreenVal:$14;BlueVal:$14), {красн. EGA 4} (RedVal:$B0;GreenVal:$00;BlueVal:$FC), {малин. EGA 5} (RedVal:$70;GreenVal:$48;BlueVal:$FC), {корич. EGA 20} (RedVal:$C4;GreenVal:$C4;BlueVal:$C4), {белый EGA 7 } (RedVal:$34;GreenVal:$34;BlueVal:$34), {серый EGA 56} (RedVal:$00;GreenVal:$00;BlueVal:$70), {св.гол.EGA 57} (RedVal:$00;GreenVal:$70;BlueVal:$00), {св.зел.EGA 58} (RedVal:$00;GreenVal:$70;BlueVal:$70), {св.бир.EGA 59} (RedVal:$70;GreenVal:$00;BlueVal:$00), {св.кр. EGA 60} (RedVal:$70;GreenVal:$00;BlueVal:$70), {св.мал.EGA 61} (RedVal:$FC;GreenVal:$FC;BlueVal:$24), {желтый EGA 62} (RedVal:$FC;GreenVal:$FC;BlueVal:$FC), {я.белыйEGA 63} ); var Driver, Mode, i : integer; begin Driver := IBM8514; { отменить автообнаружение } Mode := IBM8514Hi; InitGraph(Driver, Mode, ''); { перевести в графический режим } if GraphResult < 0 then Halt(1); { нулевая палитра, весь графический вывод невидим } for i := 0 to MaxColors do with EGAColors[i] do SetRGBPalette(i, 0, 0, 0); { вывести что-нибудь на экран } { изменить первый 16 записей палитры для 8514 } for i := 1 to MaxColors do begin SetColor(i); OutText(10, i*10, '...Нажмите любую клавишу..'); end; { восстановить принятые по умолчанию цвета EGA в палитру 8514 } for i := 0 to MaxColors do with EGAColors[i] do SetRGBPalette(i, RedVal, GreenVal, BlueVal); Readln; CloseGraph; end. Функция SetSelectorBase модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает базовый адрес селектора. Целевая платформа: Защищенный режим, Windows. Описание: function SetSelectorBase(Selector: Word; Base: Longint): Word; Примечания: Устанавливает базовый адрес селектора, заданный параметром Selector, для линейного адреса, заданного параметром Base. При успешном выполнении функции возвращаемое значение равно Selector, в противном случае - нулю. См. также: GetSelectorBase, GetSelectorLimit, SetSelectorLimit. Функция SetSelectorLimit модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает предельное значение селектора. Целевая платформа: Защищенный режим, Windows. Описание: function SetSelectorLimit(Selector: Word; Base: Longint): Word; Примечания: Устанавливает предельное значение селектора, за- данного параметром Selector, в значение, заданное параметром Limit. В стандартном режиме Windows и в защищенном режиме DOS за- даваемое Limit значение не должно превышать $10000 (64K). Возвра- щаемое значение всегда равно 0. См. также: GetSelectorBase, GetSelectorLimit, SetSelectorBase. Процедура SetTextBuf модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Назначает для текстового файла буфер ввода-выво- да. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure SetTextBuf(var f: Text; var Buf [ ; Size: Word]); Примечания: Параметр f представляет собой файловую перемен- ную, соответствующую текстовому файлу. Параметр Buf (буфер) - лю- бая переменная, а параметр Size (размер) - необязательное выраже- ние длиной в слово. Каждая файловая переменная для текстового файла имеет внут- ренний буфер размером в 128 байт, который по умолчанию использу- ется для буферизации операций чтения и записи. Этот буфер подхо- дит для использования во многих прикладных задачах, однако прог- раммы, выполняющие значительное количество операций ввода-вывода (например, задачи, осуществляющие копирование или преобразование текстовых файлов) будут лучше работать с буфером большего разме- ра, поскольку это уменьшает перемещение головки по поверхности диска и избыточное использование файловой системы. Процедура SetTextBuf переназначает буфер, используемый для текстового файла f: вместо внутреннего буфера файла f использует- ся буфер, заданный параметром Buf. Параметр Size задает размер буфера в байтах. Если этот параметр опущен, то подразумевается использование SizeOf(Buf), то есть по умолчанию в качестве буфера используется вся область памяти, занятая буфером. Новый буфер действует до тех пор, пока для f вновь не выполняется процедура Assign. Ограничения: Данная процедура никогда не должна применяться для открытого файла, хотя вызывать ее можно немедленно вслед за обращением к процедурам Reset, Rewrite и Appеnd. Вызов процедуры SetTextBuf для открытого файла во время выполнения операций вво- да-вывода может из-за смены буфера привести к потере данных. Borland Pascal не обеспечивает существования буфера на все время выполнения операций ввода-вывода для файла. Общей ошибкой, в частности, является введение в качестве буфера локальной пере- менной и затем использование файла вне процедуры, в которой опи- сывается буфер. Пример: { в Windows используйте модуль WinCrt } var f : text; ch : char; buf : char; { буфер 10 К } begin { назначить для файла считывание из командной строки } Assign(f, ParamStr(1)); { ввести для более быстрого чтения буфер большего размера } SetTextBuffer(f, buf); Reset(f); { вывести текстовый файл на экран } while not Eof(f) do begin Read(f, ch); Write(ch); end; end. Процедура SetTextJustify модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает значения выравнивания текста, ко- торые используются процедурами OutText и OutTextXY. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SetTextJustify(Goriz, Vert: Word); Примечания: После процедуры SetTextJustify вывод текста бу- дет выравниваться по текущему указателю заданным способом. При использовании двух следующих операторов: SetTextJustify(CenterText, CenterText); OutTextXY(100, 100, 'ABC'); в середине точки с координатами (100,100) появится буква B. Уста- новленные по умолчанию параметры выравнивания можно восстановить с помощью вызова SetTextJustify(LeftText,TopText). Если процедуре SetTextJustify передаются недопустимые параметры, функция GraphResult будет возвращать значение -11 (grError), а текущие параметры выравнивания текста останутся неизмененными. См. описа- ние констант выравнивания. Ограничения: Должен использоваться графический режим. См. также: SetLineStyle, OutTextXY, GetTextSettings, OutText, TextHeight, TextWidth, SetUserCharSize, GraphResult. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); { выравнивание текста относительно центра экрана } SetTextJustify(CenterText, CenterText); OutTextXY(Succ(GetMaxX) div 2, Succ(GetMaxY) div 2, 'Легко центрируется'); ReadLn; CloseGraph; end. Процедура SetTextJustify модуль Graph Назначение: Устанавливает значения выравнивания текста, ко- торые используются процедурами OutText и OutTextXY. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SetTextJustify(Goriz, Vert: Word); Примечания: После процедуры SetTextJustify вывод текста бу- дет выравниваться по текущему указателю заданным способом. При использовании двух следующих операторов: SetTextJustify(CenterText, CenterText); OutTextXY(100, 100, 'ABC'); в середине точки с координатами (100,100) появится буква B. Уста- новленные по умолчанию параметры выравнивания можно восстановить с помощью вызова SetTextJustify(LeftText,TopText). Если процедуре SetTextJustify передаются недопустимые параметры, функция GraphResult будет возвращать значение -11 (grError), а текущие параметры выравнивания текста останутся неизмененными. См. описа- ние констант выравнивания. Ограничения: Должен использоваться графический режим. См. также: SetLineStyle, OutTextXY, GetTextSettings, OutText, TextHeight, TextWidth, SetUserCharSize, GraphResult. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); { выравнивание текста относительно центра экрана } SetTextJustify(CenterText, CenterText); OutTextXY(Succ(GetMaxX) div 2, Succ(GetMaxY) div 2, 'Легко центрируется'); ReadLn; CloseGraph; end. Процедура SetTextStyle модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает текущий шрифт Font, тип S и коэф- фициент размера символа Size. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SetTextStyle(Font: word; S: word; Size: CharSizeType); Примечания: Процедура влияет на весь текстовый вывод, выпол- няемый процедурами OutText и OutTextXY. Можно использовать один шрифт с двоичным образом 8х8 и несколько векторных шрифтов. Под- держивается нормальное (слева направо) расположение шрифта и вер- тикальное (развернутое на 90 градусов относительно нормального расположения), при котором текст начинается с нижней границы эк- рана и продолжается вверх. Размер каждого символа может увеличи- ваться на коэффициент, задаваемый параметром Size. Значение раз- мера символа, равное единице, приводит к выводу двоичного образа шрифта 8х8 в прямоугольную область экрана, содержащую 8х8 элемен- тов изображения, параметр Size, равный 2 приведет к выводу на эк- ран двоичного образа шрифта 8х8 в прямоугольную область элементов изображения размером 16х16 и т. д. (вплоть до десятикратного уве- личения нормального размера). Для определения действительных раз- меров шрифта всегда используйте процедуры TextHeight и TextWidth. Нормальными значениями размера для шрифта являются 1 для принятого по умолчанию шрифта и 4 для векторного шрифта. Эти зна- чения можно передавать процедуре SetTextStyle в параметра Size. Для настройки размера векторного текстового шрифта можно исполь- зовать процедуру SetUserFont. Обычно векторные шрифты при обращении к процедуре SetTextStyle шрифты загружаются с диска в динамически распределя- емую область памяти. Однако, вы сами можете загрузить шрифты или скомпоновать их непосредственно с вашим файлом .EXE. В этом слу- чае для регистрации шрифта модулем Graph используйте процедуру RegisterBGIfont. Когда векторные шрифты хранятся на диске, при попытке их загрузки могут происходить ошибки. При наличии ошибок функция GraphResult возвращает одно из следующих значений: grFontMem, grNoFontMem, grError, rgIOError, rgInvalidFont или grInvalidFontNum. Ограничения: Должен использоваться графический режим. См. также: SetTextJustify, TextHeight, SetTextSettings, TextWidth, GetTextSettings, RegisterBGIfont, GraphResult, SetUserCharSize. Пример: uses Graph; var Gd, Gm : integer; Y, Size : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Y := 0; for Size := 1 to 4 do begin SetTextStyle(DefaultFont, HorizDir, Size); OutText(1,y,'Размер = '+Chr(Size+48)); Inc(Y, TextHeight('H') + 1); end; Readln; CloseGraph; end. Процедура SetTime модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает в операционной системе текущее время. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SetTime(var Hour, Min, Sec, Ssec: Word); Примечания: Возвращаемые параметры принимают следующие зна- чения: Hour (час) - от 0 до 23, Min (минута) - от 0 до 59, Sec (секунда) - от 0 до 59 и Ssec (сотая доля секунды) - от 0 до 99. См. также: GetTime, GetDate, PackTime, SetDate, UnpackTime. Процедура SetUserCharSize модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позволяет пользователю изменять высоту и ширину символа для векторных шрифтов. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SetUserCharSize(MultX, DivX, MultY, DivY: Word); Примечания: Параметр MultX:DivX представляет собой отноше- ние, умноженное для активного шрифта на обычную ширину. MultY:DivY - это отношение, умноженное для активного шрифта на нормальную высоту. Например, чтобы сделать шрифт вдвое выше, ис- пользуйте для MultX значение 2, а DivX задайте равным 1 (2 div 1 = 2). После вызова процедуры SetUserCharSize для того, чтобы шрифт получил новый размер, вам не нужно сразу вызывать процедуру SetTextStyle. При обращении к процедуре SetUserCharSize для теку- щего символа устанавливается заданный размер. Ограничения: Должен использоваться графический режим. Пример: В данном примере показано, как можно изменить высоту и ширину шрифта. uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); SetTextStyle(TriplexFont, HorizDir, 4); OutText(Нормальный размер'); SetUserCharSize(1, 3, 1, 1); OutText(Уменьшенный по высоте размер'); SetUserCharSize(3, 1, 1, 1); OutText(Широкий шрифт'); Readln; CloseGraph; end. Процедура SetVerify модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает в DOS состояние флага проверки. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure SetVerify(Verify: Boolean); Примечания: Процедура SetVerify устанавливает в операционной системе DOS состояние флага проверки. В сброшенном состоянии (False) проверка операций записи на диск не выполняется. В уста- новленном состоянии флага (True) при операциях записи на диск вы- полняется поверки правильности выполнения операции. См. также: GetVerify. Процедура SetViewPort модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает для графического вывода текущую область просмотра или окно. Целевая платформа: Защищенный режим, реальный режим. Описание: SetViewPort(х1, у1, х2, у2: Word; Clip: Boolean); Примечания: Точка (x1,y1) задает верхний левый угол области просмотра, а точка с координатами (x2,y2) определяет нижний пра- вый угол (0 <= y1 < x2 и 0 <= y1 < y2). Левый верхний угол экрана задается координатами (0,0). Булевская переменная Cliр определяет, будет ли изображение отсекаться текущими границами области просмотра. Процедура SetVievPort(0,0,GetMaxX,GetMaxY,True) всегда задает в качестве области просмотра все поле графического экрана. Определены следу- ющие константы: const ClipOn := true; ClipOff := false; Все графические команды (например, GetX, ОutТехt, Rectangle, МоvеТо и т. д.) зависят от текущей области просмотра. В качестве примера заметим, что процедура МоvеТо перемещает текущий указа- тель в точку (5,5) внутри области просмотра (абсолютными коорди- натами данной точки были бы координаты (15,25)). (0,0) (GetMaxX,0) ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї і і і ЪДДДДДДДї і і і і і і і . і і і і і і і АДДДДДДДЩ і і і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ (0,GetMaxY) (GetMaxX,GetMaxY) Если булевская переменная Cliр установлена в значение Truе, то, когда выполняется обращение к процедуре SetViewPort, все ри- сунки будут обрезаться на границах текущей области просмотра. За- метим, что текущий указатель никогда не отсекается. В следующем примере прямая линия не будет нарисована полностью, поскольку она будет обрезана на границе области просмотра: SetWiewPort(10, 10, 20, 20, ClipOn); Line(0, 5, 15, 5); Если бы не выполнялось отсечение, то прямая должна была бы начинаться в точке с абсолютными координатами (10,15) и заканчи- ваться в точке с абсолютными координатами (25,15). Но, поскольку выполнялось отсечение, то в действительности прямая будет вычер- чиваться, начиная с точки с абсолютными координатами (10,15), и заканчиваться в точке (20,15). Процедуры InitGraph, ClearDevice и SetGraphMode сбрасывают определение текущей области просмотра и устанавливают в качестве области просмотра весь экран. Текущее определение области прос- мотра можно получить с помощью процедуры GetViewSettings, которая воспринимает параметры следующего глобального типа: type ViewPortType = record x1, y1, x2, y2 : word; Clip : boolean; end; Процедура SetViewPort перемещает текущий указатель в точку с координатами (0,0). Ограничения: Должен использоваться графический режим. См. также: ClearViewPort, GetViewSettings, GraphResult. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); if (gd = HercMono) or (gd = EGA or (Gd = EGA64) or (Gd = VGA) then begin SetVisualPage(0); SetActivePage(1); Rectangle(10, 20, 30, 40); SetVisualPage(1); end; else OutText('Страничный режим не поддерживается'); Readln; CloseGraph; end. Процедура SetVisualPage модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Задает номер отображаемой графической страницы. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SetVisualPage(Page: Word); Примечания: Страница, определяемая параметром Page, стано- вится отображаемой графической страницей. Несколько графических страниц поддерживается только графи- ческими адаптерами EGA (256K), VGA и Неrcules. При использовании нескольких графических страниц программа может выводить графичес- кую информацию в страницу, не выводимую в данный момент на экран, а затем быстро вывести на экран этот двоичный образ, сменив отоб- ражаемую страницу с помощью процедуры SetVisualPage. Этот метод особенно полезен в мультипликации. Ограничения: Должен использоваться графический режим. См. также: SetActivePage. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); if (gd = HercMono) or (gd = EGA or (Gd = EGA64) or (Gd = VGA) then begin SetVisualPage(0); SetActivePAge(1); Rectangle(10, 20, 30, 40); SetVisualPage(1); end; else OutText('Страничный режим не поддерживается'); Readln; CloseGraph; end. Процедура SetWriteMode модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Для константы CopyPut используется инструкция Ассемблера MOV.При этом вычерчиваемая линия "затирает" то, что было на экране. Для константы XORPut для комбинирования линии с изображением на экра- не используется инструкция XOR. Две последовательные операции XOR приведут к стиранию линии и восстановлению исходного изображения на экране. Процедура SetWriteMode влияет только на обращение к следую- щим процедурам: DrawPoly, Line, LineRel, LineTo и Rectangle. См. также: PutImage, SetLineStyle операции BitBlt, Line, LineTo. Пример: uses Graph; var Gd, Gm : integer; i : integer; x1, y1, dx, dy : integer; FillInfo : FillSettingsType; begin DirectVideo := false; { "выключить" запись на экран } Randomize; Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); { заполнить экран используемым по умолчанию образцом } GetFillSettings(FillInfo); { получить текущие параметры } SetFillStyle(WideDotFill, FillInfo.Color); Bar(0, 0, GetMaxX, GetMaxY); dx := GetMAxX div 4; { задать размер прямоугольника } dy := GetMaxY div 4; SetLineStyle(SolidLn, 0, ThickWidth); SetWriteMode(XORPut); { режим XOR для прямоугольника } repeat x1 := Random(GetMaxX - dx); y1 := Random(GetMaxY - dy); { нарисовать его } Delay(0); { короткая пауза } Rectangle(x1, y1, x1 + dx, y1 + dy) { стереть его } until KeyPressed; Readln; CloseGraph; end. Функция Sin модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает синус аргумента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Sin(x: Real): Real; Примечания: Параметр x является выражением вещественного ти- па. Результатом будет синус x. Предполагается, что это значение задает угол в радианах. Пример: var r : real; begin r := Sin(Y); end. Функция SizeOf модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает число байт, занимаемых аргументом. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function SizeOf(x): Word; Примечания: Параметр x является ссылкой на переменную или идентификатором типа. Данная функция возвращает число байт памя- ти, занимаемых x. При передаче значений функциям FillChar, Моvе, GetМем всегда следует использовать функцию SizeOf: FillChar(s, SizeOf(s), 0); GetMem(p, SizeOf(RecordType)); Пример: type CustRec = record Name : string[30]; Phone : string[14]; end; var p : ^CustRec; begin GetMem(p, SizeOf(CustRec)); end. Процедура SizeofResource модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает размер ресурса. Целевая платформа: Защищенный режим, Windows. Описание: function SizeofResource(Instance, ResInfo: THandle): Word; Примечания: SizeofResource возвращает размер ресурса, задан- ный параметрами Instance и ResInfo. Параметр Instance - это эк- земпляр модуля, получаемый обычно из переменной HInstance модуля System или создаваемой LoadLibrary. Параметр ResInfo должен быть информацией о ресурсе, созданной подпрограммой FindResource. Если ресурс не найден, возвращаемое значение равно 0. Ограничения: Из-за выравнивания в выполняемом файле возвра- щаемый размер может превышать фактический размер ресурса. Прик- ладная программа не должна рассчитывать, что SizeofResource дает точный размер ресурса. См. также: AccessResource, FindResource. Процедура Sound модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Включает внутренний динамик. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Sound(Herz: Word); Примечания: Параметр Herz задает частоту генерируемого сиг- нала в герцах. Звуковой сигнал будет звучать до тех пор, пока он не будет явным образом выключен обращением к процедуре NoSound. См. также: NoSound. Пример: uses Crt; begin Sound(220); { сигнал } Delay(200); { пауза } NoSound; { выключить } end; Функция SPtr модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущее значение регистра SP. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function SPtr: Word; Примечания: Результат длиной в слово представляет собой сме- щение указателя стека внутри сегмента стека. См. также: Sseg. Функция Sqr модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает квадрат аргумента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Sqr(x); Примечания: Параметр x - это выражение целого или веществен- ного типа. Результат, имеющий тот же тип, что и x, представляет собой квадрат x, то есть x*x. Функция Sqrt модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает квадратный корень аргумента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Sqrt(x: Real): Real; Примечания: Параметр x представляет собой выражение вещест- венного типа. Результатом является квадратный корень x. Функция SSeg модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущее значение регистра SS. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function SSeg: Word; Примечания: Результат типа Word представляет собой адрес сегмента стека. См. также: Sptr, Cseg, Dseg. Процедура Str модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует численное значение в его строковое представление. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure Str(х [: Size [: Dec ] ], var S: String); Примечания: Параметр x является выражением целого или ве- щественного типа. Параметры Size и Dec представляют собой выраже- ния целого типа. Параметр s - строковая переменная. Данная функ- ция преобразует x в его строковое представление в соответствии в параметрами форматирования Size (размер) и Dec. За исключением того, что результирующая строка сохраняется в параметре s, а не записывается в текстовый файл, результат выполнения процедуры бу- дет в точности тот же самый, что и при обращении к стандартной процедуре Write. См. также: Val, Write. Пример: { в Windows используйте WinCrt } function IntToStr(i : longint) : string; { преобразует любое значение целого типа в строку } var s : string[1]; begin Str(i,s); IntToStr := s; end; begin Writeln(IntToSt(-5322)); end. Функция StrCat модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Присоединяет копию одной строки к концу другой и возвращает результат такой конкатенации. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrCat(Dest, Source: PChar): PChar; Примечания: StrCat добавляет к Dest копию строки Source и возвращает Dest. Эта функция не выполняет проверки длины. Вы должны обеспечить, чтобы в буфере, заданном параметром Dest, было достаточно места для StrLen(Dest) + StrLen(Source) + 1 символ. Если вы хотите выполнять проверку длины, используйте функцию StrCat. См. также: StrCat. Пример: { в Windows используйте WinCrt } uses Strings; const Borland: PChar = 'Borland'; Pascal: PChar = 'Pascal'; var S: array[0..15] of Char; begin StrCopy(S, Borland); StrCatS, ' '); StrCat(S, PAscal); Writeln(S); end. Функция StrComp модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Сравнивает две строки. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrCat(Str1, Str2: PChar): Integer; Примечания: Функция StrComp сравнивает строку Str1 с Str2. Возвращаемое значение меньше 0, если Str1 < Str2, равно 0, если Str1 = Str2 или больше 0, если Str1 > Str2. См. также: StrIComp, StrLComp, StrLIComp. Пример: { в Windows используйте WinCrt } uses Strings; var C: Integer; Result: PChar; S1, S2: array[0..79] of Char; begin Readln(S1); Readln(S2); C := StrComp(S1, S2); if C < 0 then Result := ' меньше чем ' else if C > 0 then Result := ' больше чем ' else Result := ' равно '; Writeln(S1, Result, S2); end. Функция StrCopy модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Копирует одну строку в другую. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrCopy(Dest, Source: PChar): PChar; Примечания: Функция StrCopy копирует строку Source в Dest и возвращает результат в Dest. StrCopy не выполняет проверки длины. Вы должны обеспечить, чтобы в буфере, заданном параметром Dest, было достаточно места для StrLen(Source) + 1 символа. Если вы хо- тите выполнять проверку длины, используйте функцию StrLCopy. См. также: StrECopy, StrLCopy. Пример: { в Windows используйте WinCrt } uses Strings; var S: array[0..15] of Char; begin StrCopy(S, 'Borland Pascal'); Writeln(S); end. Функция StrDispose модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Уничтожает строку в динамически распределяемой области памяти. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrDispose(Str: PChar); Примечания: Функция StrDispose уничтожает строку, распреде- ленную ранее с помощью функции StrNew. Если Str имеет значение nil, то функция StrDispose не делает ничего. См. также: StrNew. Функция StrECopy модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Копирует одну строку в другую, возвращая указа- тель на конец строки-результата. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrECopy(Dest, Source: PChar): PChar; Примечания: Функция StrECopy копирует строку Source в Dest и возвращает StrEnd(Dest). Вы должны обеспечить, чтобы в буфере, заданном параметром Dest, было достаточно места для StrLen(Source) + 1 символа. Для конкатенации последовательности строк можно использовать вложенные вызовы StrECopy (см. пример). См. также: StrCopy, StrEnd. Пример: { в Windows используйте WinCrt } uses Strings; const Borland: PChar = 'Borland'; Pascal: PChar = 'Pascal'; var S: array[0..15] of Char; begin StrECopy(StrECopy(StrECopy(S, Borland), ' '), Pascal); Writeln(S); end. Функция StrEnd модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на конец строки. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrEnd(Str: PChar): PChar; Примечания: Функция StrEnd возвращает указатель на нулевой символ, завершающий строку Str. См. также: StrLen. Пример: { в Windows используйте WinCrt } uses Strings; const S: array[0..79] of Char; var Readln(s); Writeln('Длина строки равна ', StrEnd(S) - S); end. Функция StrIComp модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Сравнивает две строки, не различая регистр сим- волов. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrIComp(Str1, Str2: PChar): Integer; Примечания: Функция StrIComp сравнивает строку Str1 со стро- кой Str2, не учитывая регистр символов. Возвращаемое значение меньше 0, если Str1 < Str2, равно 0, если Str1 = Str2 или больше 0, если Str1 > Str2. См. также: StrComp, StrLComp, StrLIComp. Функция StrLCat модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Присоединяет копию одной строки к концу другой и возвращает результат такой конкатенации. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrLCat(Dest, Source: PChar; MaxLen: Word): PChar; Примечания: StrCat добавляет к Dest копию строки Source (не более MaxLen - StrLen(Dest) символов) и возвращает результат в Dest. Для определения параметра MaxLen вы можете использовать функцию SizeOf. См. также: StrCat. Пример: { в Windows используйте WinCrt } uses Strings; var S: array[0..9] of Char; begin StrLCopy(S, 'Borland', SizeOf(S) - 1); StrLCat(S, ' ', SizeOf(S) - 1); StrLCat(S, 'Pascal', SizeOf(S) - 1); Writeln(S); end. Функция StrLComp модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Сравнивает две строки до максимальной длины. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrLComp(Str1, Str2: PChar; MaxLen: Word): Integer; Примечания: Функция StrLComp сравнивает строку Str1 с Str2 до максимальной длины MaxLen символов, Возвращаемое значение меньше 0, если Str1 < Str2, равно 0, если Str1 = Str2 или больше 0, если Str1 > Str2. См. также: StrComp, StrIComp, StrLIComp. Пример: { в Windows используйте модуль WinCrt } uses Strings; var Result: PChar; S1, S2: array[0..79] of Char; begin Readln(S1); Readln(S2); if StrLComp(S1, S2, 5) = 0 then Result := 'равны' else Result := 'не равны' Writeln('Первые пять символов ', Result); end; Функция StrLCopy модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Копирует символы из одной строки в другую. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrLCopy(Dest, Source: PChar; MaxLen: Word): PChar; Примечания: Функция StrLCopy копирует не более MaxLen симво- лов из строки Source в Dest и возвращает результат в Dest. Для определения параметра MaxLen можно использовать стандартную функ- цию SizeOf (см. пример). См. также: StrCopy. Пример: { в Windows используйте WinCrt } uses Strings; const var S: array[0..9] of Char; begin StrLCopy(S, 'Borland Pascal', SizeOf(S) - 1); Writeln(S); end. Функция StrLen модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает число символов в Str. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrLen(Str: PChar): Word; Примечания: Функция StrLen возвращает число символов в Str, не считая нулевого завершающего символа. См. также: StrEnd. Пример: { в Windows используйте модуль WinCrt } uses Strings; var S: array[0..79] of Char; begin Readln(S); Writeln('Длина строки равна ', StrLen(S)); end. Функция StrLIComp модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Сравнивает две строки до максимальной длины, не различая регистр символов. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrLIComp(Str1, Str2: PChar; MaxLen: Word): Integer; Примечания: Функция StrLComp сравнивает строку Str1 с Str2 до максимальной длины MaxLen символов без различия регистра сим- волов. Возвращаемое значение меньше 0, если Str1 < Str2, равно 0, если Str1 = Str2 или больше 0, если Str1 > Str2. См. также: StrComp, StrIComp, StrLComp. Функция StrLower модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует строку в нижний регистр. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrLower(Str: PChar): PChar; Примечания: Функция StrLower преобразует строку Str в нижний регистр и возвращает результат в Str. См. также: StrUpper. Пример: { в Windows используйте модуль WinCrt } uses Strings; var S: array[0..79] of Char; begin Readln(S); Writeln(StrLower(S)); Writeln(StrUpper(S)); end. Функция StrMove модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Копирует символы из одной строки в другую. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrMove(Dest, Source: PChar; Count: Word): PChar; Примечания: Функция StrMove копирует ровно Count символов из строки Source в Dest и возвращает результат в Dest. Source и Dest могут перекрываться. См. также: StrCopy. Пример: { распределить память для строки в динамической области } function StrNew(S: PChar): PChar; var L: Word; P: PChar; begin if (S = nil) or (S^ = #0) then StrNew := nil else begin L := StrLen(S) + 1; GetMem(P, L); StrNew := StrMove(P, S, L); end; end; { освободить память для строки в динамической области } procedure StrDispose(S: PChar); begin if S <> nil then FreeMem(S, StrLen(S) + 1); end; Функция StrNew модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выделяет память для строки в динамически распре- деляемой области. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrNew(Str: PChar): PChar; Примечания: Функция StrNew выделяет память для строки Str в динамически распределяемой области. Если Str равно nil или указы- вает на пустую строку, функция StrNew возвращает значение nil и не выделяет память в динамической области. В противном случае StrNew создает копию Str, получая память через вызов GetMem, и возвращает указатель на строку-дубликат. Выделенная память имеет размер StrLen(Str) + 1 байт. См. также: Dispose. Пример: { в Windows используйте модуль WinCrt } uses Strings; var P: PChar; S: array[0..79] of Char; begin Readln(S); P := StrNew(S); Wruiteln(P); StrDispose(P); end. Функция StrPas модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует строку с завершающим нулем в строку Паскаля. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrPas(Str: PChar): String; Примечания: Функция StrPas преобразует строку Str в строку Паскаля. См. также: StrCopy. Пример: { в Windows используйте модуль WinCrt } uses Strings; var A: array[0..79] of Char; S: String[79]; begin Readln(A); S := StrPas(A); Writeln(S); end. Функция StrPCopy модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Копирует строку Паскаля в строку с завершающим нулем. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrPCopy(Dest: PChar; Source: String): PChar; Примечания: Функция StrPCopy копирует строку Паскаля Source в Dest и возвращает результат в Dest. Вы должны обеспечить, чтобы в буфере, заданном параметром Dest, было достаточно места для StrLen(Source) + 1 символа. См. также: StrCopy. Пример: { в Windows используйте модуль WinCrt } uses Strings; var A: array[0..79] of Char; S: string[79]; begin Readln(S); StrPCopy(A, S); Writeln(A); end. Функция StrPos модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на первое вхождение строки в другой строке. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrPos(Str1, Str2: PChar): PChar; Примечания: Функция StrPos возвращает указатель на первый экземпляр Str2 в Str1. Если Str2 не содержится в Str1, то возвра- щается значение nil. См. также: StrCopy. Пример: { в Windows используйте модуль WinCrt } uses Strings; var P: PChar; S, Substr: array[0..79] of Char; begin Readln(S); Readln(SubStr); P := StrPos(S, SubStr); if P = nil then Writeln('Подстрока не найдена'); else Writeln('Подстрока найдена; индекс: ', P - S); end. Функция StrRScan модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на последнее вхождение сим- вола в строке. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrRScan(Str: PChar; Chr: Char): PChar; Примечания: Функция StrRScan возвращает указатель на послед- нее вхождение символа Chr в строке Str. Если Chr не содержится в Str, то возвращается значение nil. Нулевой завершающий символ считается частью строки. См. также: StrScan. Пример: { возвращает указатель на имя файла в полном имени маршрута } function NamePart(FileName: PChar): PChar; var P: PChar; begin P := StrRScan(FileName, '\'); if P = nil then P := FileName; end; NamePart := P; end. Функция StrScan модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на первое вхождение символа в строке. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrScan(Str: PChar; Chr: Char): PChar; Примечания: Функция StrRScan возвращает указатель на первое вхождение символа Chr в строке Str. Если Chr не содержится в Str, то возвращается значение nil. Нулевой завершающий символ считает- ся частью строки. См. также: StrRScan. Пример: { возвращает True, если имя файла содержит трафаретные сим- волы } function Wildcards(FileName: PChar): Boolean; begin HasWildcards := (StrScan(FileName, '*') <> nil) or (StrScan(FileName, '?') <> nil); end; Функция StrUpper модуль Strings ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует строку в верхний регистр. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function StrUpper(Str: PChar): PChar; Примечания: Функция StrUpper преобразует строку Str в верх- ний регистр и возвращает результат в Str. См. также: StrLower. Пример: { в Windows используйте модуль WinCrt } uses Strings; var S: array[0..79] of Char; begin Readln(S); Writeln(StrLower(S)); Writeln(StrUpper(S)); end. Функция Succ модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает следующее значение аргумента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Succ(x); Примечания: Параметр x - выражение перечислимого типа. Ре- зультат, имеющий тот же тип, что и x, является следующим элемен- том x. См. также: Dec, Pred, Inc. Функция Swap модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Переставляет местами старший и младший байты ар- гумента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Swap(x); Примечания: Параметр x - выражение типа Integer или Word. См. также функции Hi, Lo. Пример: var x : word; begin x := Swap($1234); { $3412 } end. Процедура SwapVectors модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Меняет местами внутренние векторы. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure SwapVectors; Примечания: Меняет местами содержимое указателей SaveIntXX в модуле System и текущее содержимое векторов прерываний. Процедура SwapVectors обычно вызывается непосредственно перед и непосредс- твенно после вызова Exec. Таким образом обеспечивается, что вы- полняемый по вызову Exec процесс не использует никаких обработчи- ков прерываний, установленных текущим процессом и наоборот. См. также: Еxec. Пример: {$M 8192,0,0} uses Dos; var Command: string[79]; begin Write('Введите команду DOS:'); Readln(Command); if Command <> '' then Command := '/C' + Command; Swapvectors; Exec(GetEnv('COMSPEC'), Command); SvapVectors; if DosError <> 0 then Writeln('Командный файл COMMAND.COM выполнить нельзя'); end. Процедура TextBackGround модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выбирает фоновый цвет. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure TextBackGroud(Color: byte); Примечания: Параметр Color представляет собой выражение це- лого типа в диапазоне 0...7, соответствующее одной из первых восьми констант цветов. В модуле Crt имеется байтовая переменная ТехtAttr, которая используется для сохранения текущего видеоатрибута. Процедура ТехtBackGround устанавливает биты 4-6 этой переменой в соответс- твии с параметром Color. Фоновый цвет для всех выводимых далее символов будет соответствовать заданному цвету. См. также: TextColor, HighVideo, LowVideo, NormVideo, конс- танты цветов. Процедура TextColor модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выбирает цвет символа. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure TextColor(Color: Byte); Примечания: Параметр Color представляет собой выражение це- лого типа в диапазоне 0...15, соответствующее одной из констант цветов, определенных в модуле Crt. В модуле Crt имеется байтовая переменная ТехtAttr, которая используется для сохранения текущего видеоатрибута. Процедура ТехtBасkGround устанавливает биты 0-3 этой переменой в соответс- твии с параметром Color. Если параметр Color превышает значение 15, то устанавливается также бит мерцания (бит 7), в противном случае он очищается. Вы можете задать мерцание символов путем прибавления 128 к значению цвета. Для этой цели определена константа Blink. Факти- чески ради совместимости с версией 3.0 любое значение цвета, пре- вышающее 15 вызывает мерцание символа. Цвет всех выводимых далее символов будет соответствовать указанному цвету. См. также: TextBackGround, HighVideo, NormVideo, LowVideo, константы цветов. Пример: TextColor(Green); ( выбрать зеленые символы } TextColor(LightRed+Blink) ( выбрать мерцающие светло- красные символы } TextColor(14); ( выбрать желтые символы } Функция TextHeight модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает высоту строки в элементах изображе- ния. Целевая платформа: Защищенный режим, реальный режим. Описание: function TехtНеight(S: String): Word; Примечания: На основе размера текущего шрифта и коэффициента размера определяет строки, заданной параметром S, в элементах изображения. Это полезно использовать для выбора интервала между строками, вычисления высоты области просмотра, определения разме- ра заголовка, чтобы он поместился в заданном рисунке или в задан- ную область и т.д. Например, при использовании шрифта с двоичным образом 8х8 и коэффициента размера 1 (установленных процедурой SetTextStyle) строка Тurbо будет иметь высоту 8 элементов изобра- жения. Очень важно использовать процедуру TextHeight для вычисления высоты строк, вместо того, чтобы делать это вручную. Тогда при выборе различных шрифтов отпадает необходимость изменения текста программы. Ограничения: Должен использоваться графический режим. См. также: OutText, OutTextXY, SetTextStyle, TextWidth, SetUserCharSize. Пример: uses Graph; var Gd, Gm : integer; Y, Size : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Y := 0; for Size := 1 to 5 do begin SetTextStyle(DefaultFont, HorizText, Size); OutTextXY(0, Y, 'Графика Borland'); Inc(Y, TextWidth('Графика Borland')); end; Readln; CloseGraph; end. Процедура TextMode модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выбирает указанный текстовый режим. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure TехtМоdе(Mode: Integer); Примечания: При вызове процедуры TехtМоdе сбрасывается теку- щее окно и в качестве текущего окна рассматривается вся область экрана, для DirectVideo устанавливается значение True, для CheckSnow также устанавливается значение Truе (если был выбран цветной режим), и текущий текстовый атрибут сбрасывается в нор- мальное состояние, соответствующее обращению к процедуре NormVideo, а текущий видеорежим сохраняется в LastMode. При ини- циализации программы LastMode получает значение текущего видеоре- жима. Задание TextMode(LastMode) приводит к тому, что вновь будет выбран последний активный текстовый режим. Это бывает полезно в том случае, когда после использования графических средств вы хо- тите вернуться в текстовый режим. Обращение вида: TextMode(c80 + Font8x8) приведет к тому, что дисплей будет сброшен в состояние, при кото- ром используется 43 строки и 80 позиций в строке и графический адаптер VGA с цветным монитором. Обращение TextMode(Lo(LastMode)) всегда выключает 43 или 50-строчные режимы и сбрасывает дисплей (хотя его видеорежим остается неизмененным), а вызов: TextMode(lo(LastMode)+Font8x8) оставит видеорежим тем же самым, но сбросит дисплей в 43 или 50-строчный режим. Если при загрузке программы Borland Pascal ваша система на- ходится в 43 или 50-строчном режиме, этот режим будет сохранен в секции инициализации модуля Crt, и переменная, в которой отслежи- вается максимальное число строк на экране (WindMax) будет инициа- лизирована правильно. Приведем пример "корректной" программы, которая восстанавли- вает видеорежим в исходное состояние. program Video; uses Crt; var OrigMode : integer; begin OrigMode := LastMode; { сохранить исходный режим } . . . TextMode(OrigMode); end. Заметим, что процедура TextMode не поддерживает графических режимов. Таким образом TextMode(OrigMode) будет восстанавливать только те режимы, которые поддерживаются процедурой TextMode. См. также: RestoreCrtMode, константы режима Crt. Функция TextWidth модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает ширину строки в элементах изображе- ния. Целевая платформа: Защищенный режим, реальный режим. Описание: function TехtWidth(S: String): Word; Примечания: На основе длины строки (в символах), размера те- кущего шрифта и коэффициента размера определяет длину строки, за- данной параметром S, в элементах изображения. Это полезно исполь- зовать для выбора интервала между строками, вычисления ширины области просмотра, определения размера заголовка, чтобы он помес- тился в заданном рисунке или в заданную область и т.д. Например, при использовании шрифта с двоичным образом 8х8 и коэффициента размера 1 (установленными процедурой SetTextStyle) строка Тurbо будет иметь длину 40 элементов изображения. Очень важно использовать процедуру TextWidth для вычисления ширины строк, вместо того, чтобы делать это вручную. Тогда при выборе различных шрифтов отпадает необходимость изменения текста программы. См. также: OutText, OutTextXY, SetTextStyle, TextHeight, SetUserCharSize. Пример: uses Graph; var Gd, Gm : integer; Row, Size : integer; Title : string; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Row := 0; Title := 'Turbo Graphics'; Size := 1; while TextWidth(Title) < WindiwWidth do begin OutTextXY(0, Row, Title); Inc(Row, TextHeight('M')); Inc(Size); SetTextStyle(DefaultFont, HorizDir, Size); end; Readln CloseGraph; end. Процедура TitlePrn модуль WinPrn ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает заголовок печатаемого файла. Целевая платформа: Windows. Описание: procedure TitlePrn(var F: Text; Title: PChar); Примечания: Выводит заголовок задания печати для администра- тора печати Windows и заголовки, выводимые при печати в сети. Процедура TitlePrn должна вызываться перед ReWrite, иначе она не действует. Пример: См. пример для AbortPrn. См. также: AbortPrn, AssingDefPrn, AssignPrn, SetPrnFont. Процедура TrackCursor модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Прокручивает окно Crt для обеспечения видимости курсора. Целевая платформа: Windows. Описание: procedure TrackCursor; См. также: ScrollTo. Функция Trunc модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Округляет значение вещественного типа до значе- ния целого типа. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Trunc(x: Real): Longint; Примечания: Параметр x представляет собой выражение вещест- венного типа. Функция Round возвращает значение длинного целого типа, которое является значением x, округленным в сторону нуля. Ограничения: Если округленное значение x не соответствует диапазону представления длинного целого типа, то происходит ошиб- ка этапа выполнения. См. также: Round, Int. Процедура Truncate модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Усекает размер файла до текущей позиции в файле. Описание: procedure Truncate(var f); Примечания: Параметр f является файловой переменной любого типа. Все записи после текущей позиции в файле f удаляются, и те- кущая позиция в файле становится концом файла (функция Eof(f) принимает значение True). При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Файл f должен быть открыт. См. также: Seek, Reset. Функция TypeOf модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на таблицу виртуальных ме- тодов объекта (VMT). Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function TypeOf(X): Pointer; Примечания: X - идентификатор объекта или экземпляра объект- ного типа. В любом случае TypeOf возвращает адрес таблицы вирту- альных методов объектного типа. TypeOf может применяться только к объектным типам, имеющим таблицу виртуальных методов. Все другие методы дают в результате ошибку. См. Главу 21 ("Вопросы использо- вания памяти") в "Руководстве по языку". Функция UnlockResource модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разблокирует ресурс. Целевая платформа: Защищенный режим, Windows. Описание: function UnlockResource(ResData: THandle): Bool; Примечания: Данная функция разблокирует ресурс, заданный параметром ResData. Параметр ResData должен представлять собой описатель ресурса, созданный с помощью LoadResource. Если ресурс является выгружаемым, то его счетчик блокировки уменьшается на 1. Если значение счетчика блокировки становится нулевым, то ресурс разблокируется и подлежит выгрузке. Если счетчик блокировки ре- сурса уменьшен до 0, то возвращаемое значение равно False, в про- тивном случае возвращается значение True. Каждый раз, когда прикладная программа вызывает для ресурса функцию LockResource, она должна в итоге вызывать для этого ре- сурса функцию UnlockResource. См. также: LoadResource, LockResource. Функция UnlockSegment модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разблокирует сегмент. Целевая платформа: Защищенный режим, Windows. Описание: function UnlockSegment(Segment: Word): THandle; Примечания: Параметр Segment задает селектор разблокируемого сегмента. Если сегмент является выгружаемым, то его счетчик бло- кировки уменьшается на 1. Если значение счетчика блокировки ста- новится нулевым, то разблокируется и подлежит выгрузке. Если счетчик блокировки ресурса уменьшен до 0, то возвращаемое значе- ние равно False, в противном случае возвращается значение True. Для невыгружаемых сегментов функция UnlockSegment не действует. Каждый раз, когда прикладная программа вызывает для ресурса функцию LockResource, она должна в итоге вызывать для этого ре- сурса функцию UnlockResource. См. также: LockSegment. Процедура UnpackTime модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует четырехбайтовое значение, представ- ляющее собой упакованный длинный целый тип представления даты и времени, возвращаемый процедурами GetTime, FindFirst и FindNext, в распакованную запись DateTime (дата и время) Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure UnpackTime(Time: Longint; var DT: DatewTime); Примечания: Запись DateTime описана в модуле Dos. Проверка диапазона для полей времени Time не выполняется. См. также: PackTime, GetFTime, SetFTime, GetTime, SetTime. Функция UpCase модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует символ в верхний регистр. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function UpCase(Ch: Char); Примечания: Параметр Ch представляет собой выражение сим- вольного типа. Результатом символьного типа будет символ, задава- емый параметром Ch, преобразованный в символ верхнего регистра. Значения символов, не лежащие в диапазоне а...z, остаются без из- менений. Процедура Val модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Преобразует строковое значение в его численное представление. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure Val(s: String; var v; var Code: Integer); Примечания: Параметр s представляет собой выражение строко- вого типа. Параметр v является переменной целого или вещественно- го типа. Параметр Code - это переменная целого типа, которая фор- мирует все число со знаком. Функция Val преобразует строку s в ее численное представление и сохраняет результат в v. Если где-либо в строке встречается недопустимый символ, то его номер сохраняет- ся в параметре Code. В противном случае этот параметр равен нулю. В зависимости от состояния {$R} и типа параметра v функция Val по-разному выполняет проверку диапазона. Если состояние проверки диапазона установлено, то есть зада- но {$R+}, то выражения, выходящие за границу диапазона, всегда будут генерировать ошибку этапа выполнения. Если состояние проверки диапазона сброшено, то есть задано {$R-}, то выражения, выходящие за границу диапазона, будут вызы- вать эффект, зависящий от их типа. Если v имеет тип real или longint, то значение v становится неопределенным и в параметре Code возвращается ненулевое значение. Для любого другого числово- го типа в параметре Code возвращается нулевое значение, а v будет содержать результат вычислений с переполнением (если предполо- жить, что строковое значение попадает в диапазон представления длинного целого). Таким образом, передав процедуре Val переменную длинного це- лого типа (longint) и перед тем, как присваивать полученное зна- чение, следует выполнять проверку диапазона. Например: {$R-} Val('65536', LongIntVar, Code); if (Code <>0) or (LOngIntVar < 0) or (LongIntVar > 65535) then . { ошибка } . . else WordVar := LongIntVar; В этом примере LongIntVar будет установлена в 65536, а Code будет равно 0. Поскольку для переменной Word значение 65536 выхо- дит за допустимый диапазон, будет сообщаться об ошибке. Ограничения: Предшествующие пробелы должны быть удалены. См. также: Str. Пример: var i, code : integer; begin { получить текст из командной строки } Val(ParamStr(1), i, code); { ошибка при преобразовании в целое значение? } if code <> 0 then Writeln('Ошибка на позиции :', code); else Writeln('Значение = ', i); end. Функция WhereX модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущей позиции курсора относи- тельно текущего окна координату Х. Целевая платформа: Защищенный режим, реальный режим. Описание: function WhereX: Byte; См. также: WhereY, GotoXY, Window. Функция WhereX модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущей позиции курсора относи- тельно текущего окна координату Х текущей позиции курсора. Целевая платформа: Windows. Описание: function WhereX: Byte; Примечание: Возвращаемое значение является координатой, отс- читываемой от 1, и соответствует Cursor.X + 1. См. также: WhereY, GotoXY, Window. Функция WhereY модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущей позиции курсора относи- тельно текущего окна координату Y. Целевая платформа: Защищенный режим, реальный режим. Описание: function WhereY: Byte; См. также: WhereX, GotoXY, Window. Функция WhereY модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущей позиции курсора относи- тельно текущего окна координату Y текущей позиции курсора. Целевая платформа: Windows. Описание: function WhereY: Byte; Примечание: Возвращаемое значение является координатой, отс- читываемой от 1, и соответствует Cursor.Y + 1. См. также: WhereX, GotoXY, Window. Процедура Window модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Определяет на экране текстовое окно. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure Window(X1, Y1, X2, Y2: Byte); Примечания: Параметры Х1, Y1 представляют собой координаты верхнего левого угла окна, параметры Х2, Y2 - это координаты пра- вого нижнего угла. Правый левый угол экрана соответствует коорди- нате (1,1). Минимальный размер текстового окна - один столбец на одну строку. Если координаты являются каким-то образом недопусти- мыми, то обращение к процедуре Window игнорируется. В 80-символьных режимах по умолчанию определяется окно (1,1, 80,25), а в 40-символьных режимах - (1,1,40,25), что соответству- ет всему экрану. Все координаты экрана (кроме самих координат окна) являются относительными координатами данного окна. Например, GotoXY(1,1) всегда позиционирует курсор на верхний левый угол текущего окна. Многие процедуры и функции модуля Crt, включая ClrEol, ClrScr, DelLine, GotoXY, InsLine, WhereX, WhereY, Read, Readln, Write, Writeln, зависят от текущего окна. Процедуры WindMin и WindМах сохраняют текущее определение окна. Пример: uses Crt; var x, y : byte; begin TextBackGround(Black); { очистить экран } ClrScr; repeat x := Succ(Random(80)); { нарисовать случайным образом окна } y := Succ(random(25)); Window(x, y, x + Random(10), y + Random(8)); TextBackGround(Random(16)); { использовать случайные фоновые цвета } ClrScr; until KeyPressed; end. |