ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 4 Функция FExpand модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Расширяет имя файла до полного имени файла. Целевая платформа: Защищенный режим, реальный режим. Описание: function FExpand(path :PathStr): PathStr; Примечания: Расширяет имя файла, задаваемого параметром маршрута Path, до полного имени файла. Полученное в результате имя преобразуется в прописные буквы и содержит буквенную метку дисковода, двоеточие, путь доступа относительно корневого катало- га и имя файла. Внутренние ссылки на каталоги ".." и "." удаляют- ся. Тип PathType определен в модуле DOS в виде строки (string[79]). Предположим, что текущим диском и каталогом является C:\SOURCE\PAS. Тогда следующие вызовы процедуры FExpand дадут та- кие значения: FExpand('test.pas') = 'C:\SOURCE\PAS\TEST.PAS' FExpand('../*.TPU') = 'C:\SOURCE\*.TPU' FExpand('c:\bin\turbo.exe') = 'C:\BIN\TURBO.EXE' См. также: FindFirst, FindNext, FSplit, строковые типы рабо- ты с файлами. Функция FileExpand модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Расширяет имя файла до полностью уточненного имени файла. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function FileExpand(Dest, Name: PChar): PChar; Примечания: Расширяет имя файла, задаваемого параметром Name, до полного имени файла. Полученное в результате имя преоб- разуется в буквы верхнего регистра и содержит буквенную метку дисковода, двоеточие, маршрут относительно корневого каталога и имя файла. Внутренние ссылки на каталоги ".." и "." удаляются. Компоненты имени файла и расширения усекаются соответственно до 8 и 3 символов. Результат Dest и Name могут ссылаться на один ад- рес. Предположим, что текущим диском и каталогом является C:\SOURCE\PAS. Тогда следующие вызовы процедуры FileExpand дадут такие значения: FileExpand(S,'test.pas') = 'C:\SOURCE\PAS\TEST.PAS' FileExpand(S,'../*.TPU') = 'C:\SOURCE\*.TPU' FileExpand(S,'c:\bin\turbo.exe') = 'C:\BIN\TURBO.EXE' См. также: FindFirst, FindNext, FSplit, строковые типы рабо- ты с файлами. Функция FilePos модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущую позицию в файле. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function FilePos(var f): Longint; Примечания: Параметр f представляет собой файловую перемен- ную. Если текущей позицией является начало файла, то функция FilePos(f) возвращает значение 0. Если текущей позицией в файле является конец файла, то есть Eоf(f) возвращает значение Truе, то значение, возвращаемое функцией FilePos(f), совпадает со значени- ем, возвращаемым функцией FileSizе(f) (то есть с размером файла). При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Эта функция не может использоваться для тексто- вого файла. Файл должен быть открыт. См. также: FileSize, Seek. Функция FileSearch модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Ищет файл в списке каталогов. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function FilePos(Dest, Name, List: PChar): PChar; Примечания: Ищет файл с именем Name в списке каталогов, за- данным параметром List. Каталоги в List должны разделяться точка- ми с запятой, аналогично каталогам, заданным в команде DOS PATH. Поиск начинается всегда с текущего каталога текущего диска. Если файл не найден, FileSearch записывает в Dest конкатенация маршру- та каталога и имени файла. В противном случае FileSearch записы- вает в Dest пустую строку. Возвращаемое значение находится в Dest. Dest и Name не должны ссылаться на одно и то же. Максимальная длина результата определяется константой fsPathName (которая равна 79). Чтобы искать выполняемые файлы по маршруту DOS, вызовите GetEnvVar('PATH') и передайте результат FileSearch в качестве па- раметра List. Результат FileSearch можно передать FileExpand для преобра- зования его в полностью уточненное имя файла, то есть имя файла в верхнем регистре, включающее в себя буквенную метку диска и марш- рут относительно корневого каталога. Кроме того, вы можете ис- пользовать для разбиения имени файла на строку диска/каталога, строку имени файла и строку расширения, вы можете использовать функцию FileSplit. См. также: FileExpand, FileSplit, константы длины имени фай- ла, FSearch. Пример: { под Windows используйте модуль WinCrt } uses WinDos; var S: array[0..fsPathName] of Char; begin FileSearch(S, 'BP.EXE', GetEnvVar('PATH')); if S[0] = #0 then Writeln('BP.EXE не найден') else Writeln('Найден как ',FileExpand(S, S)); end. Функция FileSize модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий размер файла. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function FileSize(var f): Longint; Примечания: Параметр f представляет собой файловую перемен- ную. Данная функция возвращает число элементов в f. Если файл пуст, функция возвращает значение 0. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Ограничения: Функция не может использоваться для текстового файла. Файл должен быть открыт. См. также: FilePos. Пример: { под Windows используйте модуль WinCrt } var f : file of byte; begin { получить имя файла из командной строки } Assign(f, ParamStr(1)); Reset(f); Writeln('Размер файла в байтах: ', FileSize(f)); Close(f); end. Функция FileSplit модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разбивает полное имя файла на три компонента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function FileSplit(Path, Dir, Name, Ext: PChar): Word; Примечания: Разбивает полное имя файла, заданное параметром Path, на три компонента. Dir будет содержать буквенную метку дис- ка и маршрут каталога с предшествующей и завершающей обратной ко- сой чертой, Name - имя файла, а Ext - расширение имени файла с предшествующей точкой. Если строковый параметр-компонент содер- жит nil, то соответствующая часть маршрута не записывается. Если маршрут не содержит данного компонента, возвращаемая строка ком- понента будет пуста. Максимальные длины строк, возвращаемые в па- раметрах Dir, Name и Ext, определяются константами fsDirectory, fsFileName и fsExtension. Возвращаемое значение является комбинацией битовых масок fcDirectory, fcFileName и fcExtension, указывающих, сколько ком- понентов присутствовало в маршруте. Если имя или расширение со- держит трафаретные символы (* или ?), то в возвращаемом значении устанавливается флаг fcWildCard. См. в данной главе список конс- тант fcXXXX и fsXXXX. См. также: FileExpand,FindFirst, FindNext, FSplit. Пример: { под Windows используйте модуль WinCrt } var Path: array[0..fsPathName] of Char; Dir: array[0..fsDirectory] of Char; Name: array[0..fsFileName] of Char; Ext: array[0..fsExtension] of Char; begin Write('Имя файла (WORK.PAS: '); Readln(Path); FileSplit(Path, Dir, Name, Ext); if Name[0] = #0 then StrCopy(Name, 'WORK'); if Ext[0] = #0 then StrCopy(Ext, '.PAS'); StrECopy(StrECopy(StrECopy(Path, Dir), Name), Ext); Writeln('Полученное в результате имя: ', Path); end. Процедура FillChar модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Помещает в заданное число следующих друг за дру- гом байт указанное значение. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure FillChar(var x; Count: Word; Val); Примечания: Параметр x является ссылкой на переменную любого типа, Count представляет собой выражение длиной в слово, Val яв- ляется выражением перечислимого типа. Процедура записывает значе- ние, указанное в параметре Val, в то количество следующих друг за другом байт памяти, начиная с первого байта, занимаемого перемен- ной х, которое определяется параметром Count. Проверка на допус- тимость границ не выполняется, поэтому будьте внимательны. Если это возможно, при использовании процедуры FillChar за- давайте параметр Count с помощью функции SizeOf. При использова- нии этой процедуры для строк не забудьте после заполнения устано- вить длину в байтах. См. также: Моvе. Пример: var s : string[80]; begin { задать строку, состоящую из пробелов } FillChar(s, SizeOf(s),' '); { установить длину последо- вательности байт } s[0] := #80; end. Функция FillEllipse модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Рисует эллипс. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure FillEllipse(X, Y: Integer; ХRad, YRad: Word); Примечания: Используя точку с координатами (X,Y) в качестве центра, а XRad и YRad - в качестве горизонтальной и вертикальной осей, рисует закрашенный эллипс. Ограничения: Должен использоваться графический режим. См. также: Arc, Circle, Ellipse, GetArcCoords, GetAspectRatio, PieSlice. Пример: uses Graph; const R = 30; var Driver, Mode: integer; Xasp, Yasp : word; begin Driver := Detect; { переводит в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); { нарисовать эллипс } FillEllipse(GetMaxX div 2, GetMaxY div 2, 50, 50); GetAspectRatio(Xasp, Yasp); { "круглый" эллипс } FillEllipse(R, R, R, R, * LongInt(Xasp) div Yasp); ReadLn; CloseGraph; end. Процедура FillPoly модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Рисует закрашенный многоугольник. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure FillPoly((N : Word; var S); Примечания: Параметр S является нетипизированным параметром, который содержит координаты каждого пересечения сторон в многоу- гольнике (координаты вершин). Параметр N задает число координат в S. Координата состоит из двух слов: значения x и значения y. Данная процедура вычисляет все горизонтальные пересечения и затем заполняет многоугольник, используя текущий тип и цвет зак- раски, которые задаются процедурами SetFillStyle и SetFillPattern. При вычерчивании контура многоугольника использу- ется текущий тип линии и цвет, которые устанавливаются процедурой SetLineStyle. Если при закраске многоугольника возникает ошибка, то функ- ция GraphResult возвращает значение grNoScanMem. Ограничения: Должен использоваться графический режим. См. также: DrawPoly, GetFillSettings, GetLineSettings, SetLineStyle, GraphResult, SetLineStyle. Пример: uses Graph; const Pentagon : array[1..6] of PointType = ((x: 50; y: 50), (x: 75; y: 75), (x: 62; y: 100), (x: 48; y: 100), (x: 25, y: 75), (x: 50, y: 50)); begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); DrawPoly(SizeOf(Pentagon) div SizeOf(PointType), Pentagon); FillPoly(SizeOf(Pentagon) div SizeOf(PointType), Pentagon); Readln; CloseGraph; end. Процедура FindFirst модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Производит поиск в заданном (или текущем) ката- логе первой записи, соответствующей заданному имени файла и набо- ру атрибутов файла. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure FindFirst(Path: String; Attr: Bytе; var S: SearchRec); { DOS } procedure FindFirst(Path: String; Attr: Bytе; var S: TSearchRec); { Windows } Примечания: Параметр Path определяет каталог, например "*.*". Параметр Attr определяет включение в список рассматривае- мых специальные файлы (наряду со всеми обычными файлами). Список атрибутов файла, как они описаны в модуле Dos и в WinDow, вы мо- жете найти в данной главе. Результат поиска по каталогу возвращается в заданной записи типа SearchRec, который описывается в модуле Dos, и TSearchRec, который описывается в модуле WinDos. Коды ошибки можно получить с помощью DosError. Возможными значениями кодов являются 3 (маршрут не найден) и 18 (больше фай- лов нет). См. также: FindNext, DosError, FExpand, константы атрибута файла, FileExpand, SearchRec, TSearchRec. Пример: { под Windows используйте WinCrt } uses Dos; var { под Windows используйте TSearchRec } DirInfo : SearchRec; begin { под Windows используйте fArchive } FindFirst('*.PAS', Archive, DirInfo); { то же, что и DIR *.PAS } while DosError = 0 do begin Writeln(DirInfo.Name); FindNext(DirInfo); end; end. Процедура FindNext модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает следующую запись, совпадающую с име- нем и атрибутами файла, указанными при предыдущем обращении к процедуре FindFirst. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure FindNext(var s: SearchRec); { DOS } procedure FindNext(var s: TSearchRec); { Windows } Примечания: Параметр s должен быть таким же, как при обраще- нии к FindFirst (тип SearchRec описывается в модуле Dos, а TSearchRec - в WinDos). С помощью DosError можно получить код ошибки. Единственно возможным кодом является код 18, указывающий на отсутствие файлов. См. также: FindFirst, DosError, FExpand, константы атрибута файла, FileExpand, SearchRec, TSearchRec. Пример: См. пример для процедуры FindFirst. Функция FindResource модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Ищет ресурс в файле ресурса. Целевая платформа: Защищенный режим, Windows. Описание: function FindResource(Instance: THandle; Name, ResType: PChar): THandle; Примечания: Находит в файле ресурса, заданном параметром Instance, ресурс, заданный параметрами имени Name и типа ресурса ResType, и возвращает описатель информации о ресурсе. Если ресурс не найден, то возвращается нулевое значение. Параметр Instance - это описатель экземпляра модуля, получаемый обычно из переменной HInstance модуля System или создаваемый LoadLibrary. Параметры Name и ResType указывают либо на строку с завершающим нулем, либо задают порядковое значение. В последнем случае старшее слово Name или ResType равно 0, а младшее содержит порядковое значение. См. также: AccessResource, LoadResource, SizeofResource. Процедура FloodFill модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Закрашивает ограниченную область, используя те- кущий заполнитель. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure FloodFill(x, y: Integer; S: Word); Примечания: Эта процедура используется для заполнения замк- нутой области (на экране). Точка (x,y) является произвольной внутренней точкой заполняемой области. Для заполнения области, ограниченной цветом, которую определяет параметр S, используется текущий образец закраски. Если точка (x,y) находится внутри замк- нутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть (поле экрана, не входящее в область). Если при заполнении области происходит ошибка, то функция GraphResult возвращает значение grNoFloodMem. Заметим, что процедура FloodFill останавливается после того, как выведено две пустых линии. Это может произойти в том случае, когда заполнитель и маленький прямоугольник сливаются. В следую- щей программе прямоугольник полностью не закрашивается: program StopFill; uses Graph; var Driver, Mode: integer; begin Driver := Detect; InitGraph(Driver, Mode, 'c:\bgi'); if GraphResult <> grOk then Halt(1); SetFillStyle(LtSlashFill, GetMaxColor); Rectangle(0, 0, 8, 20); FloodFill(1, 1, GetMaxColor); ReadLn; CloseGraph; end. В этом случае прямоугольник будет полностью закрашен, если использовать более "густой" заполнитель типа SlashFill. Ограничения: Используя, где это возможно, вместо FloodFill FillPoly, вы можете обеспечить совместимость кода с будущими вер- сиями. Должен использоваться графический режим. При применении графического драйвера IBM 8514 (IBM8514.BGI) данная процедура не- доступна. См. также: SetFillPattern, FillPoly, SetFillStyle, GraphResult. Пример: uses Graph; var Driver, Mode: integer; begin Driver := Detect; InitGraph(Driver, Mode, ''); if GraphResult <> grOk then Halt(1); SetColor(Red); FloodFill(50,50,GetMaxColor); Readln; CloseGraph: end. Процедура Flush модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выводит содержимое буфера открытого для вывода текстового файла. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure Flush(var f: Text); Примечания: Параметр f является файловой переменной тексто- вого типа. Когда текстовый файл открывается для вывода с помощью проце- дур Rewrite или Appеnd, обращение к процедуре Flush позволяет очистить буфер файла. Это обеспечивает то, что все символы, запи- санные в это время в файл, будут действительно записаны во внеш- ний файл. Для файлов, открытых для ввода, данная процедура ника- ких действий не выполняет. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Функция Frac модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает дробную часть аргумента. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Frac(x : Real): Real; Примечания: Параметр х является выражением вещественного ти- па. Результатом является дробная часть x, то есть Frас(x) = x - Int(x). См. также: Int. Пример: var r : real; begin f := Frac(123.456); { 0.456 } end. Процедура FreeLibrary модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Освобождает динамически загружаемую библиотеку. Целевая платформа: Защищенный режим, Windows. Описание: procedure FreeLibrary(LibModule: THandle); Примечания: Параметр LibModule должен быть описателем эк- земпляра модуля, созданного LoadLibrary. FreeLibrary уменьшает на 1 счетчик ссылок для данной библиотеки, и, если значение счетчика становится равным 0, занятая библиотекой память освобождается. Ограничения: Динамически компонуемая библиотека (DLL) не должна освобождать память в своей функции выхода (WEP). См. также: LoadLibrary. Процедура FreeMem модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Уничтожает динамическую переменную данного раз- мера. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure FrееМем(var P : Pоinter; Size : Word); Примечания: Параметр P является указателем на переменную (относящимся к любому типу указателей), для которого было предва- рительно выполнено присваивание с помощью процедуры GetМем или которому было присвоено значащее значение с помощью оператора присваивания. Параметр Size представляет собой выражение длиной в слово, которое задает размер уничтожаемой динамической переменной (в байтах). Его значение должно в точности соответствовать числу байт памяти, отведенных ранее для переменной процедурой GetМем. Процедура FrееМем уничтожает переменную, на которую указывает P, и освобождает занятую ей область памяти в динамически распределя- емой области. Если указатель p не ссылается на область памяти в динамически распределяемой области, то во время выполнения прог- раммы возникает ошибка. После обращения к процедуре FrееМем зна- чение указателя p становится неопределенным, а последующие ссылки вида p^ будут приводить к ошибке. См. также: Dispose, GetMem, Release. Функция FreeResource модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Удаляет загруженный ресурс из памяти, освобождая занимаемую данным ресурсом память. Целевая платформа: Защищенный режим, Windows. Описание: function FreeResource(ResData: THandle): Bool; Примечания: Освобождает занимаемую данным ресурсом память. Параметр ResData должен представлять собой описатель ресурса, созданный LoadResource. FreeResource уменьшает счетчик ссылок для заданного ресурса. FreeResource не выполняет фактического освобождения ресурса, пока счетчик ссылок не станет равным нулю (то есть число вызовов FreeResource не станет равным числу вызовов LoadResource). Если FreeResource завершается неудачно, и ресурс не освобож- дается, то возвращаемое значение равно True; если функция завер- шается успешно, то возвращается значение False. См. также: LoadResource. Функция FreeSelector модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Освобождает селектор. Целевая платформа: Защищенный режим, Windows. Описание: function FreeSelector(Selector: Word): Word; Примечания: Освобождает селектор, созданный первоначально с помощью AllocSelector или AllocDStoCSAlias. После вызова FreeSelector селектор становится недопустимым и больше использо- ваться не может. В случае успешного выполнения функции возвращае- мое значение равно 0, в противном случае возвращается значение заданного селектора. См. также: AllocDStoCSAlias, AllocSelector. Функция FSearch модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Ищет файл в списке каталогов. Целевая платформа: Реальный режим, защищенный режим. Описание: function FSearch(Path: PathStr; L: String): PathStr; Примечания: Функция выполняет поиск файла, заданного пара- метром Path, в списке каталогов, заданных параметром L. Каталоги в списке должны разделяться точкой с запятой аналогично тому, как это делается в команде операционной системы DOS PATH. Поиск начи- нается всегда с текущего каталога на текущем диске. Возвращаемое значение представляет собой конкатенацию одного из маршрутов ка- талогов и имени файла или, в том случае, если файл найден не бу- дет, пустую строку. Тип PathStr описан в модуле Dos (см. выше). Для нахождения выполняемых файлов с помощью команды DOS PATH нужно вызвать процедуру GetEnv('PATH') и передать результат функ- ции FSearch в качестве параметра L. Результат функции FSearch можно передать функции FExpand для преобразования его в полное имя файла, то есть имя файла, запи- санное прописными буквами включающее в себя буквенную метку дис- ковода и маршрут доступа к каталогу, начиная от корневого катало- га. Кроме того, для разделения имени файла на строку, определяю- щую каталог, и строку, задающую дисковод можно использовать функ- цию FSplit. См. также: FExpand, FSplit, GetEnv. Пример: uses Dos; var S: PathStr; begin S: := FSearch('TURBO.EXE', GetEv('PATH')); if S = '' then WriteLn('Файл TURBO.EXE не найден'); else WriteLn('Найден файл ',FExpand(S)); end. Процедура FSplit модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разделяет имя файла на три компоненты. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure FSplit(Path: PathStr; var Dir: DirStr; var Name: NameStr; var Ext: ExtStr); Примечания: Имя файла, заданное параметром Path, разделяется на три его компоненты. Для переменной Dir устанавливается значе- ние буквенной метки дисковода и маршрута доступа к каталогу со всеми начальными и конечными знаками обратной косой черты, пере- менной Name присваивается значение имени файла, а переменной Ext - расширение имени файла с предшествующей точкой. Каждый из этих составляющих строку элементов может оказаться пустым (в том слу- чае, если Path не содержит соответствующего элемента). Типы PathStr, DirStr, ExtStr и NameStr определены в модуле Dos (см. строковые типы работы с файлом). При разделении имени файла на компоненты FSplit не добавляет и не удаляет никаких символов. При конкатенации результирующих переменных Dir, Name и Ext будет получен заданный маршрут. Пример: uses Dos; var P: PathStr; D: DirStr; N: NameStr; E: ExtStr; begin Write('Имя файла (WORK.PAS) : ') ReadLn(P); FSplit(p, D, N, E); if N = '' then N:='WORK'; if E = '' then E:='.PAS'; P := D + N + E; WriteLn('Результирующее имя = ',P); end. Процедура GetArcCoords модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позволяет пользователю выдавать запрос о коорди- натах последнего обращения к процедуре Arс. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetArcCoords(var Coords: ArcCoordsType); Примечания: Данная процедура возвращает переменную (коорди- наты) типа CoordType, который является предописанным и определен в модуле Graph. Процедура GetArcCoords возвращает переменную, содержащую точку центра (Х,Y), начальную позицию (Хbeg,Ybeg) и конечную по- зицию (Хend,Yend) последней команды Arс. Эти значения могут быть полезными, если вы хотите, например, провести прямую, начинающую- ся от конца дуги. Ограничения: Должен использоваться графический режим. См. также: Arc, Ellipse, PieSlice, PieSliceXY. Пример: uses Graph; var GraphDriver, GraphMode : integer; ArcCoords : ArcCoordsType; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); Arc(100,100,0,89,30); GetArcCoords(ArcCoorsType); MoveTo(100,100); with ArcCoords do Line(Xstart, Ystart, Xend, Yend); Readln; CloseGraph; end. Функция GetArgCount модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает число параметров, переданных програм- ме в командной строке. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetArgCount: Integer; См. также: GetArgStr, ParamCount, ParamStr. Функция GetArgStr модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает параметр командной строки, заданный Index. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetArgSrt(Dest: PChar; Index: Integer; MaxLen: Word): PChar; Примечания: Если Index имеет значение, меньшее 0 или большее GetArgCount, то данная функция возвращает пустую строку. Макси- мальная длина возвращаемой строки определяется параметром MaxLen. См. также: GetArgCount, ParamCount, ParamStr. Процедура GetAspectRatio модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает действующую разрешающую способность графического экрана, с помощью которого можно вычислить коэффици- ент относительного удлинения (Хk,Yk). Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetAspectRatio(var Хk, Yk: Word); Примечания: Для каждого драйвера и графического режима име- ется связанный с ним коэффициент относительного удлинения (част- ное от деления максимального разрешения по y на максимальное раз- решение по x). Это отношение можно вычислить путем обращения к процедуре GetAspectRatio и последующего деления параметра Хk на параметр Yk. Это отношение используется при вычерчивании окруж- ностей, дуг и закруглений. Ограничения: Должен использоваться графический режим. См. также: Arc, Circle, GetMaxX, GetMaxY, PieSlice, SetAspectRatio. Пример: uses Graph; var Xasp, Yasp : word; GraphDriver, GraphMode : integer; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); GetAspectRatio(Xasp,Yasp); XSideLength := 20; { выровнять длину по Y в соответствии с коэффициентом относительного удлинения } YSideLength := Round((Xasp/Yasp)*XSideLength); { нарисовать на экране "квадратный" прямоугольник } Rectangle(0,0,XSideLength,YSideLength); Readln; CloseGraph; end. Функция GetBkColor модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущее значение фонового цвета. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetBkColor: Word; Примечания: Фоновый цвет может принимать значения в диапазо- не от 0 до 15 (в зависимости от текущего графического драйвера и текущего графического режима). Если запись 0 палитры была изменена обращением к процедурам SetPalette или SetAllPalette, то функция GetBkColor будет возвра- щать значение 0. Ограничения: Должен использоваться графический режим. См. также: GetColor, GetPalette, InitGraph, SetAllPalette, SetBkColor, SetColor, SetPalette. Пример: uses Graph; var GraphDriver, GraphMode : integer; Color : word; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); if GraphResult <> grOk then Halt(1); Randomize; repeat Color := Succ(GetBkColor); if Color > PaletteSize then Color := 0; SetBkColor(Color); LineTo(Random(GetMaxX), Random(GetMaxY)); until False; { для выхода нажмите ^Break } end. Процедура GetCBreak модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает состояние Ctrl+Break, которое прове- ряется операционной системой DOS. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetCBreak(var Break: boolean); Примечания: Данная процедура возвращает состояние Ctrl+Break, проверяемое в DOS. В выключенном состоянии (False) DOS проверяет Ctrl+Break только при выводе на консоль, устройство печати или в коммуникационные порты. Во включенном состоянии (True) проверки делаются при каждом обращении к системе. См. также: SetCBreak. Функция GetColor модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущее значение основного цвета, ус- тановленное при предыдущем успешном обращении к процедуре SetColor. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetColor: Word; Примечания: Если данная процедура возвращает значение 0, то это означает, что текущим цветом, используемым для вычерчивания, является первый цвет палитры. Основной цвет может принимать зна- чения от 0 до 15, в зависимости от текущего графического режима и графического драйвера. Ограничения: Должен использоваться графический режим. См. также: GetBkColor, GetPalette, InitGraph, SetAllPalette, SetColor, SetPalette. Пример: var GraphDriver, GraphMode : integer; Color : word; begin GraphDriver := Detect; InitGraph(GraphDriver,GraphMode,''); Randomize; repeat Color := Succ(GetBkColor); if Color > PaletteSize then Color := 0; SetBkColor(Color); LineTo(Random(GetMaxX), Random(GetMaxY)); until False; { для выхода нажмите ^Break } end. Функция GetCurDir модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий каталог на заданном диске. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function GetCurDir(Dir: PChar; Drive: Byte): PChar; Примечания: Возвращаемая в Dir строка всегда начинается с буквенной метки диска, двоеточия и обратной косой черты. Drive = 0 указывает текущий диск, 1 - диск A, 2 - диск B и т.д. Возвраща- емое значение записывается в Dir. Об ошибках сообщается в DosError. Если заданный параметром Drive диск недопустим, то в Dir возвращается 'X:\', как если бы это был корневой каталог недопус- тимого диска. Максимальная длина полученной в результате строки определя- ется константой fsDirectory. Текущий каталог на данном диске в виде строки Паскаля возвращается функцией GetDir. См. также: SetCurDir, CreateDir, RemoveDir. Процедура GetDate модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущую дату, установленную в опера- ционной системе. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetDate(var Year, M, Day, D: Word); Примечания: Возвращаемые значения имеют следующие диапазоны: Year (год) - 1980..2099, M (месяц) - 1..12, Day (число) 1..31, D (день недели) - 0..6 (где значение 0 соответствует воскресенью). См. также: SetDate, GetTime, SetTime. Функция GetDefaultPalette модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает запись описания палитры. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetDefaultPalette(var Palette: PaletteType): PaletteType; Примечания: Данная функция возвращает запись PaletteType, содержащую палитру Palette, инициализированную драйвером при вы- зове процедуры InitGraph. Ограничения: Должен использоваться графический режим. См. также: InitGraph, GetPalette, SetAllPalette, SetPalette. Пример: uses Crt, Graph; var Driver, Mode, i : integer; MyPal, OldPal : PletteType; begin DirectVideo := false; Randomize; Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); GetDefultPalette(OldPal); { сохранить старую палитру } MyPal := OldPal; { скопировать и изменить } { вывести информацию на экран } for i = 0 to MyPal.Size - 1 do begin GetColor(i); OutTextXY(10, i * 10, '...нажмите любую клавишу...'); end; repeat { менять палитру, пока нажата клавиша } with MyPl do Colors[Random(Size)] := Random(Size + 1); SetAllPalette(MyPal); until KeyPressed; SetAllPalette(OldPal); { восстановить исходную палитру } ClearDevice; OutTextXY(10, 10, 'Нажмите клавишу Enter...') ReadLn; CloseGraph; end. Процедура GetDir модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий каталог на заданном диске. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetDir(d: Byte; var s: String); Примечания: Параметр d представляет собой выражение целого типа, а s - переменную строкового типа. Значение текущего катало- га на диске, заданного параметром d, возвращается в переменной s. Значение d = 0 указывает на текущий дисковод, 1 - задает дисковод A, 2 - В и т.д. GetDir не выполняет проверки на ошибки. Если в параметре d задан недопустимый диск, то в s возвращается 'X:\', как если бы это был корневой каталог на недопустимом диске. Функция GetCurDir выполняет те же функции, что и GetDir, но в качестве аргумента воспринимает строку с завершающим нулем, а не строку Паскаля. См. также: ChDir, MkDir, RmDir. Функция GetDOSEnviroment модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на текущую строку операци- онной строки задачи. Целевая платформа: Защищенный режим, Windows. Описание: function GetDOSEnviroment: PChar; Примечания: В отличие от прикладной программы динамически компонуемая библиотека не имеет копии строки операционной среды и для получения строки должна использовать эту функцию. Пример: В данном примере выводится содержимое текущей опера- ционной среды задачи. uses Strings, WinAPI; { в Windows используйте также WinCrt } var P: PChar; begin P: := GetDOSEnviroment; while P[0] <> #0 do begin Whiteln(P); Inc(P, StrLen(P) + 1); end; end. Функция GetDriverName модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает строку, содержащую имя текущего драй- вера. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetDriverName: String; Примечания: После обращения к InitGraph данная функция возв- ращает имя активного драйвера. Ограничения: Должен использоваться графический режим. См. также: InitGraph, GetModeName. Пример: uses Graph; var Driver, Mode : integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); OutText('Используется драйвер ' + GetDriverName); ReadLn; CloseGraph; end. Функция GetEnv модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает значение заданной переменной операци- онной среды. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetEnv(Env: String): String; Примечания: Функция GetEnv возвращает значение заданной пе- ременной Env. Имя переменной может указываться как строчными, так и прописными буквами, но оно не должно включать в себя знак ра- венства (=). Если заданная переменная операционной среды не су- ществует, то функция GetEnv возвращает пустую строку. Более подробная информация об операционной среде DOS содер- жится в справочных руководствах по DOS. См. также: EnvCount, EnvStr, GetDOSEnviroment. Пример: {$M 8192,0,0} uses Dos; var Command: string[79]; begin Write('Введите команду DOS: '); ReadLn(Command); if Command <> '' then Command := '/C/ + Command; SwapVectors; Exec(GetEnv(COMSPEC'), Command); SwapVectors; if DosError <> 0 then Writeln('Нельзя выполнить COMMAND.COM'); end. Функция GetEnvVar модуль WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает указатель на значение заданной пере- менной операционной среды. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function GetEnvVar(Env: String): String; Примечания: Функция GetEnvVar возвращает указатель на значе- ние заданной переменной операционной среды, например, указатель на первый символ после знака равенства (=) в записи операционной среды, заданной VarName. Переменная может быть записана в верхнем или нижнем регистре, но не должна включать в себя символ равенс- тва. Если заданная переменная операционной среды не существует, то GetEnvVar возвращает nil. Пример: uses WinDow; { в Windows используйте также WinCrt } begin Writeln('Текущим маршрутом является ', GetEnvVar('PATH')); end. Процедура GetFAttr модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает атрибуты файла. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetAttr(var f; var Attr : Word); Примечания: Параметр f должен представлять собой файловую переменную (соответствующую типизированному, нетипизированному или текстовому файлу) для которого должно быть выполнено присваи- вание файловой переменой, но который не должен быть открыт. Про- верка атрибутов Attr выполняется путем сравнения их с масками, заданными в виде констант в модуле Dos (см. выше). Коды ошибок можно получить с помощью функции DosError. Воз- можными кодами ошибок являются код 3 (недопустимый маршрут) и код 5 (файл недоступен). Ограничения: Файл f не должен быть открыт. См. также: SetFAttr, GetFAttr, SetFTime. Пример: uses Dos; var f : file; attr : byte; begin { получить из командной строки имя файла } Assign(f, ParamStr(1)); GetFAttr(f, attr); Writeln(ParamStr(1)); ifDosError <> 0 then Writeln('Код ошибки DOS = ', DosError) else begin Writeln('Атрибут = ', attr); { определить тип атрибута файла с помощью флагов в модуле Dos } if attr and ReadOnly <> 0 then Writeln('Файл доступен только по чтению'); if attr and Hidden <> 0 then Writeln('Скрытый файл'); if attr and SysFile <> 0 then Writeln('Системный файл'); if attr and VolumeId <> 0 then Writeln('Идентификатор тома'); if attr and Directory <> 0 then Writeln('Каталог'); if attr and Archive <> 0 then Writeln('Архивизируемый (обычный) файл'); end; { else } end. Процедура GetFillPattern модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий образец заполнителя, заданный последним обращением к процедуре SetFillPattern. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetFillPattern(var Pattern: FillPatternType); Примечания: Параметр Pattern - это образец заполнителя. Тип FillPatternType описан в модуле Graph. Если пользователь не обра- щался к процедуре SetFillPattern, то процедура GetFillPattern возвратит массив, заполненный $FF. Ограничения: Должен использоваться графический режим. См. также: SetFillPattern, GetFillSettings, SetFillStyle. Процедура GetFillSettings модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позволяет выдавать запрос о текущем типе запол- нителя и его цвете, которые установлены процедурами SetFillStyle или SetFillPattern. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetFillSetings(var Inf: FillSettingsType); Примечания: Данная процедура возвращает переменную Inf (ин- формация о заполнителе) типа FillSettingsType, который описывает- ся в модуле Graph. Поле Pattern содержит выбранный в качестве текущего тип за- полнителя. Поле Color содержит выбранный в качестве текущего цвет закраски. И образец, и цвет закраски можно изменить путем обраще- ния к процедурам SetFillStyle и SetFillPattern. Если Pattern рав- но UserFill, то для получения определенного пользователем образца закраски используйте GetFillPatrtern. Ограничения: Должен использоваться графический режим. См. также процедуры FillPoly, SetFillStyle, SetFillPattern. !seealso: FillPoly SetFillStyle SetFillPattern Пример: uses Graph; var Gd, Gm : integer; FillInfo : FillSttingsType; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); GetFillSettings(FillInfo); { сохранить стиль закраски и цвет } Bar(0, 0, 50, 50); SetFillStyle(XHatchFill, GetMaxColor); { новый стиль } Bar(50, 0, 100, 50); with FillInfo do SetFillStyle(Pattern, Color); { восстановить старый цвет закраски } Bar(100, 0, 150, 50); Readln; CloseGraph; end. Функция GetFreeSpace модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает общий объем свободной памяти в дина- мически распределяемой области. Целевая платформа: Защищенный режим, Windows. Описание: procedure GetFreeSpace(Flag: Word): Longint; Примечание: Переменная Flag игнорируется и должна быть равна 0. Она существует только для совместимости с реальным режимом Windows. Возвращается значение объема свободной памяти в байтах. Из-за фрагментации маловероятно, чтобы можно было выделить блок такого размера. Чтобы найти размер наибольшего непрерывного блока памяти, вызовите подпрограмму GlobalCompact. См. также: GlobalCompact, GlobalAlloc. Процедура GetFTime модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает дату и время последней записи файла. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetFTime(var f; var Time: Longint); Примечания: Параметр f должен представляет собой файловую переменную (соответствующую типизированному, нетипизированному или текстовому файлу) для которого должно быть выполнено присваи- вание файловой переменной, но который не должен быть открыт. Зна- чение времени, возвращаемое в параметре Time, может быть распако- вано путем обращения к процедуре UnpackTime. Коды ошибок можно получить с помощью функции DosError. Единственным возможным кодом ошибки является код 6 (недопустимый описатель файла). Ограничения: Файл должен быть открыт. См. также: SetFTime, PackTime, UnPackTime, DosError. Функция GetGraphMode модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий графический режим. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetGraphMode: Integer; Примечания: Данная процедура возвращает текущий графический режим, установленный с помощью процедур InitGraph и SetGraphMode. Значение режима представляет собой целое число в диапазоне от 0 до 5 и зависит от текущего драйвера. Определены следующие константы режима: ЪДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДДДДВДДДДДДДї іГрафическийі Имя іЗначениеі Столбцов і Палитра іСтраниці і драйвер іконстантыі і х строк і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і CGA і CGAC0 і 0 і 320x200 і C0 і 1 і і і CGAC1 і 1 і 320x200 і C1 і 1 і і і CGAC2 і 2 і 320x200 і C2 і 1 і і і CGAC3 і 3 і 320x200 і C3 і 1 і і і CGAHi і 4 і 640x200 і 2 цвета і 1 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і MCGA і MCGAC0 і 0 і 320x200 і C0 і 1 і і і MCGAC1 і 1 і 320x200 і C1 і 1 і і і MCGAC2 і 2 і 320x200 і C2 і 1 і і і MCGAC3 і 3 і 320x200 і C3 і 1 і і і MCGAMed і 4 і 640x200 і 2 цвета і 1 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і EGA і EGALo і 0 і 640x200 і 16 цветов і 1 і і і EGAHi і 1 і 640x350 і 16 цветов і 2 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і EGA64 і EGA64Lo і 0 і 640x200 і 16 цветов і 1 і і і EGA64Hi і 1 і 640x350 і 4 цвета і 1 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і EGA- і EGAMonoHі 3 і 640x350 і 2 цвета і 1* і і MONO і EGAMonoHі 3 і 640x350 і 2 цвета і 1** і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і HERC і HercMonoіi 0 і 720x348 і 2 цвета і 2 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і ATT400 і ATT400C0і 0 і 320x200 і C0 і 1 і і і ATT400C1і 1 і 320x200 і C1 і 1 і і і ATT400C2і 2 і 320x200 і C2 і 1 і і і ATT400C3і 3 і 320x200 і C3 і 1 і і і ATT400Meі 4 і 640x200 і 2 цвета і 1 і і і ATT400Hiі 5 і 640x200 і 2 цвета і 1 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і VGA і VGALo і 0 і 640x200 і 16 цветов і 2 і і і VGAMed і 1 і 640x350 і 16 цветов і 2 і і і VGAHi і 2 і 640x480 і 16 цветов і 1 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і PC3270 і PC3270Hiі 0 і 640x200 і 2 цвета і 1 і і і і і і і і ГДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДДДДЕДДДДДДДґ і 8514 і IBM8514Lі 0 і 640x480 і 256 цветові 1 і і 8514 і IBM8514Hі 0 і 1024x768 і 256 цветові 1 і і і і і і і і АДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДДДДБДДДДДДДЩ * - 64К на плате EGAMono ** - 256К на плате EGAMomo Ограничения: Должен использоваться графический режим. См. также: ClearDevice, DetectGraph, InitGraph, RestoreCrtMode, SetGraphMode. Пример: uses Graph; var Gd, Gm : integer; Mode : integer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); OutText('Для выхода из средств графики нажмите Enter:'); Readln; RestoreCRTMode; Writeln('Теперь вы в текстовом режиме'); Writeln('Для перехода в графический режим нажмите Enter'); Readln; SetGraphMode(GetGraphMode); OutTextXY(0, 0, 'Вы снова в графическом режиме'); OutTextXY(0, TextHeight('H'), 'Для выхода нажмите Enter'); Readln; CloseGraph; end. Процедура GetImage модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Сохраняет в буфере двоичный образ заданной об- ласти экрана. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetImage(х1, у1, х2, у2: Integer; var BitMap); Примечания: Параметры х1, у1, х2, у2 определяют прямоуголь- ную область экрана. Параметр BArray (битовый массив) является не- типизированным параметром, который должен быть больше или равен 4, плюс размер памяти, отведенный для области экрана. Первые два слова параметра BitMap используются для хранения ширины и высоты области экрана; третье слово свободное. Оставшаяся часть параметра BitMap используется для сохране- ния самого двоичного образа. Для определения размера памяти, не- обходимой для параметра BitMap, используйте функцию ImageSize. Ограничения: Должен использоваться графический режим. См. также: ImageSize, PutImage. Пример: var P : pointer; Size : word; Gd, Gm : pointer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Bar(0, 0, GetMaxX, GetMaxY); Size := ImageSize(10,20,30,40); GetMem(p,Size); { выделить память в динамически распределяемой области } GetImage(10,20,30,40,P^); Readln; ClearDevice; PutImage(100, 100, P^, NormalPut); Readln; CloseGraph; end. Процедура GetImage модуль Graph Назначение: Сохраняет в буфере двоичный образ заданной об- ласти экрана. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetImage(х1, у1, х2, у2: Integer; var BitMap); Примечания: Параметры х1, у1, х2, у2 определяют прямоуголь- ную область экрана. Параметр BArray (битовый массив) является не- типизированным параметром, который должен быть больше или равен 4, плюс размер памяти, отведенный для области экрана. Первые два слова параметра BitMap используются для хранения ширины и высоты области экрана; третье слово свободное. Оставшаяся часть параметра BitMap используется для сохране- ния самого двоичного образа. Для определения размера памяти, не- обходимой для параметра BitMap, используйте функцию ImageSize. Ограничения: Должен использоваться графический режим. См. также: ImageSize, PutImage. Пример: var P : pointer; Size : word; Gd, Gm : pointer; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Bar(0, 0, GetMaxX, GetMaxY); Size := ImageSize(10,20,30,40); GetMem(p,Size); { выделить память в динамически распределяемой области } GetImage(10,20,30,40,P^); Readln; ClearDevice; PutImage(100, 100, P^, NormalPut); Readln; CloseGraph; end. Процедура GetIntVec модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает адрес указанного вектора прерываний. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetIntVec(Int: Byte; var Vec: Pointer); Примечания: Параметр Int задает номер вектора прерывания (от 0 до 255), а его адрес возвращается в параметре Vec. Ограничения: В защищенном режиме DOS и в стандартном и улуч- шенном режиме Windows GetIntVec возвращает вектор прерывания за- щищенного режима с заданным номером вектора прерывания. Функцию GetIntVec нельзя использовать для запроса векторов прерывания ре- ального режима или векторов исключительных ситуаций защищенного режима. См. также: SetIntVec. Процедура GetLineSettings модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий стиль линии, образец линии и ее толщину, установленные процедурой SetLineStyle. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetLineSettings(var LineInfo: LineSettingsType); Примечания: См. описание типа LineSettingType. Ограничения: Должен использоваться графический режим. См. также: SetLineStyle. Пример: var GraphDriver, GraphMode : integer; OldStyle: LineSettingsType; begin GraphDiver := Detect; InitGraph(GraphDriver,GraphMode,''); if Graphesult <> grOk then Halt(1); Line(0, 0, 100, 0); GetLineSettings(OldStyle); SetLineSettings(DottesLn, 0, ThickWidth); Line(0, 10, 100, 10); with OldStyle do { восстановить старый стиль линии } SetLineStyle(LineStyle, Pattern, Thickness); Line(0, 20, 100, 20); Readln; CloseGraph; end. Процедура GetMaxColor модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает наибольшее значение цвета, которое можно передать процедуре SetColor. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetMaxColor: Word; Примечания: Например, при использовании адаптера EGA с 256К процедура GetMaxColor всегда возвращает значение 15. Это означа- ет, что допускается любое обращение к процедуре SetColor со зна- чением от 0 до 15. При использовании адаптера CGA в режиме с вы- соким разрешением или монохромного адаптера Hercules, поскольку эти адаптеры поддерживают только значения основного цвета 0 или 1, процедура GetMaxColor возвращает значение 1. Ограничения: Должен использоваться графический режим. См. также: SetColor. Функция GetMaxMode модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущего загруженного драйвера максимальное значение номера режима. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetMaxMode: Word; Примечания: Данная функция позволяет вам непосредственно из драйвера найти для текущего драйвера максимальное значение номера режима. (Ранее единственный способ, с помощью которого вы могли получить это значение, состоял в использовании процедуры GetModeRange. Теперь эта процедура также поддерживается, но толь- ко для драйверов фирмы Borland.) Значение, возвращаемое функцией GetMaxMode, представляет собой максимальное значение, которое можно передать процедуре SetGraphMode. В каждом драйвере поддер- живаются режимы 0..GetMaxMode. Ограничения: Должен использоваться графический режим. См. также: GetModeRange, SetGraphMode. Пример: uses Graph; var Driver, Mode : integer; i : integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); for i := 0 to GetMaxMode do { вывести на экран все названия режимов } OutTextXY(10, 10 * Succ(i), GetModeName(i)); Readln; CloseGraph; end. Функция GetMахХ модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущего графического режима и драйвера самый правый столбец (разрешение по х). Целевая платформа: Реальный режим, защищенный режим. Описание: function GetMaxX: Integer; Примечания: Возвращает для текущего графического режима и драйвера максимальное значение х. В режиме 320х200 CGA, например, данная процедура будет возвращать значение 319. GetМахХ и GetМахY чрезвычайно полезны для центрирования, оп- ределения границ области экрана и т.д. Ограничения: Должен использоваться графический режим. См. также: GetMaxY, GetX, GetY, MoveTo. Пример: uses Graph; var Driver, Mode : integer; i : integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); Rectangle(0,0,GetMaxX,GetMexY); { нарисовать полную рамку экрана } Readln; CloseGraph; end. Функция GetМахY модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для текущего графического режима и драйвера самую нижнюю строку (разрешение по y). Целевая платформа: Реальный режим, защищенный режим. Описание: function GetMaxY: Integer; Примечания: Возвращает для текущего графического режима и драйвера максимальное значение y. В режиме 320х200 CGA, например, данная процедура будет возвращать значение 199. Процедуры GetМахХ и GetМахY чрезвычайно полезны для центри- рования, определения границ области экрана и т.д. Ограничения: Должен использоваться графический режим. См. также: GetMaxX, GetX, GetY, MoveTo. Пример: uses Graph; var Driver, Mode : integer; i : integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); Rectangle(0,0,GetMaxX,GetMexY); { нарисовать полную рамку экрана } Readln; CloseGraph; end. Процедура GetMem модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает новую динамическую переменную указанного размера и помещает адрес блока в переменную-указатель. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure GetMem(var p: Pоinter; Size: Word); Примечания: Параметр р является переменной-указателем и мо- жет относится к любому типу указателей. Параметр Size имеет длину в слово и задает размер (в байтах) области памяти, выделяемой для динамической переменной. На вновь созданную переменную можно ссы- латься с помощью p. Если для выделения памяти под новую динамическую переменную в динамически распределяемой области недостаточно свободной памя- ти, то во время выполнения программы происходит ошибка. (Этой ошибки можно избежать - см. раздел "Функция обработки ошибки ди- намически распределяемой области памяти" в Главе 21 "Руководства по языку".) Ограничения: Наибольший блок, который может быть выделен в динамически распределяемой области памяти, составляет 65521 байт (64К - $8). См. также: New, FreeMem. Функция GetModeName модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает строку, содержащую имя заданного гра- фического режима Mode. Целевая платформа: Реальный режим, защищенный режим. Описание: function GetModeName(Mode: Integer): String; Примечания: Имена режимов встроены в каждый драйвер. Возвра- щаемые значения (320х200 CGA P1, 640х200 CGA и т.д.) можно ис- пользовать для создания меню, вывода режимов экрана и т.д. Ограничения: Должен использоваться графический режим. См. также: GetMaxMode, GetModeRange, GetDriverName. Пример: uses Graph; var Driver, Mode : integer; i : integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); for i := 0 to GetMaxMode do { вывести все имена режимов } OutText(10, 10 * Succ(i), GetModeName(i)); Readln; CloseGraph; end. Процедура GetModeRange модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Для данного драйвера возвращает наименьший и на- ибольший графический режим. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure GetModeRange(GraphDriver: Integer; var LoMode, HiMode: Integer); Примечания: Вывод следующей программы: uses Graph; var Lovest, Highest : integer; begin GetModeRange(EGA64, Lowest, Highest); Write('Наименьшее значение = ', Lowest); Write('Наибольшее значение = ', Highest); end. даст наименьшее значение = 0 и наибольшее значение = 1. Если зна- чение GraphDriver является недопустимым, то LoMode и HiMode будут равны -1. См. также: SetGraphMode, InitGraph, DetectGraph, GetGraphMode. Функция GetModuleFileName модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает имя выполняемого файла модуля. Целевая платформа: Защищенный режим, Windows. Описание: function GetModuleFileName(Module: THandle; FileName: PChar; Size: Integer): Integer; Примечания: Данная функция возвращает полностью расширенное имя выполняемого файла модуля, из которого был загружен данный модуль. Параметр Module - это описатель экземпляра модуля, полу- чаемый обычно из переменной HInstance в модуле System или создан- ный LoadLibrary. Параметры FileName и Size задают адрес и размер буфера, в который копируется строка с завершающим нулем. Возвра- щаемое значение равно фактической длине скопированной в буфер строки. Функция GetModuleHandle модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает описатель заданного модуля. Целевая платформа: Защищенный режим, Windows. Описание: function GetModuleHandleName(ModuleName: PChar): THandle; Примечания: Параметр ModuleName задает имя модуля. Строка не может быть именем файла. Другими словами, она не может содержать маршрута или расширения. Возвращаемое значение представляет собой описатель заданного модуля или 0, если в данный момент такой мо- дуль не загружен. Функция GetModuleUsage модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает счетчик ссылки на модуль. Целевая платформа: Защищенный режим, Windows. Описание: function GetModuleUsage(Module: THandle): Integer; Примечания: Параметр Module - это строка экземпляра модуля, получаемая обычно из переменной HInstance модуля System или соз- даваемая LoadLibrary. Возвращаемое значение специфицирует счетчик ссылок на модуль. Процедура GetPalette модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущую палитру Palette и ее размер. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure GetPalette(var Palette: PaletteType); Примечания: Возвращает в переменной типа PaletteType текущую палитру и ее размер. Тип PaletteType описан в модуле Graph. Ограничения: Должен использоваться графический режим и адап- теры EGA, EGA 64 или VGA (а не IBM 8514 или 256-цветный режим VGA). См. также: SetPalette, SetAllPalette, GetPaletteSize, GetDefaultPalette. Пример: uses Graph; var Driver, Mode : integer; i : integer; begin Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult < 0 then Halt(1); GetPalette(Palette); If Palette.Size <> 1 then for i := 0 to Pred(Palette.Size) do begin SetColor(Color); Line(o, Color*5, 100, Color*5); end else Line(0, 0, 100, 0); Readln; CloseGraph; end. Функция GetPaletteSize модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает размер таблицы палитры цветов. Целевая платформа: Защищенный режим, реальный режим. Описание: function GetPaletteSize: Integer; Примечания: Данная функция показывает, сколько записей па- литры можно задать для текущего графического режима. Например, при использовании цветного режима и адаптера EGA функция возвра- тит значение 16. Ограничения: Должен использоваться графический режим. См. также: GetMaxColor, GetDefaultPalette, GetPalette, SetPalette. Процедура GetPixel модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Получает значение элемента изображения в точке Х,Y. Целевая платформа: Защищенный режим, реальный режим. Описание: function GetPixel(X, Y: Integer): Word; Примечания: Получает цвет элемента изображения в точке Х,Y. Ограничения: Должен использоваться графический режим. См. также: PutPixel, GetImage, PutImage, SetWriteMode. Пример: uses Graph; var Gd, Gm : integer; PixelColor: word; begin Gd := Detect; { перевести в графический режим } InitGraph(Gd, Gm, ''); if GraphResult < 0 then Halt(1); PixelColor := GetPixel(10, 10); if PixelColor = 0 then PutPixel(10, 10, GetMaxColor); Readln; CloseGraph; end. Функция GetProcAddress модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Находит адрес экспортируемой процедуры или функ- ции. Целевая платформа: Защищенный режим, Windows. Описание: function GetProcAddress(Module: THandle; ProcName: PChar): TFarProc; Примечания: Данная функция выполняет поиск процедуры или функции, заданной параметром ProcName, в модуле Module и возвра- щает указатель на точку входа процедуры или функции. Параметр Module должен задавать описатель экземпляра модуля, созданный LoadLibrary. Параметр ProcName указывает либо на строку с завер- шающим нулем, либо задает порядковое значение. В последнем случае старшее слово ProcName равно 0, а младшее слово содержит порядко- вое значение. В случае успешного выполнения GetProcAddress возвращает ука- затель на точку входа процедуры или функции, либо nil, если про- цедура или функция не найдена. Если заданное параметром ProcName порядковое значение не определено, GetProcAddress все равно может возвращать значение, отличное от nil. В случаях, когда процедура или функция может не существовать, ее следует искать не по поряд- ковому значению, а по имени. Ограничения: GertProcAddress следует использовать только для поиска адресов экспортируемых процедур и функций, принадлежащих DLL. Пример: Следующая библиотека экспортирует одну функцию Test по порядковому значению 5. library Lib; function Test: PChar; export; begin Test := 'Это тест'; end; exports Test index 5; begin end. Следующая программа динамически импортирует функцию Test из указанной выше библиотеки. Функция GetProcAddress используется для просмотра экспортируемой функции по имени и порядковому зна- чению: uses WinAPI; { под Windows используйте также WinCrt } L: THandle; Test: function: PChar; begin L := LoadLibrary('LIB.DLL'); if L >= 32 then begin @Test := GetProcAddress(L, 'TEXT'); { поиск по имени } if @Test <> nil then WriteLn(Test); { если найдена, вызвать ее } @Test := GetProcAddress(L, PChar(5)); { поиск по порядковому значению } if @Test <> nil then WriteLn(Test); { если найдена, вызвать ее } FreeLibrary(L); end; end. См. также: LoadLibrary. Функция GetSelectorBase модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает базовый адрес селектора. Целевая платформа: Защищенный режим, Windows. Описание: function GetSelectorBase(Selector: Word): Longint; Примечания: Selector задает селектор, для которого возвраща- ется базовый адрес. См. также: GetSelectorLimit, SetSelectorLimit, SetSelectorBase. Функция GetSelectorLimit модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает предельное значение заданного селек- тора. Целевая платформа: Защищенный режим, Windows. Описание: function GetSelectorLimit(Selector: Word): Longint; Примечания: Selector задает селектор, для которого возвраща- ется предельное значение. См. также: GetSelectorBase, SetSelectorLimit, SetSelectorBase. Процедура GetTextSettings модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий тип текстового шрифта, его направление, размер и выравнивание, установленные с помощью про- цедур SetTextStyle и SetTextJustify. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure GetTextSettings(var TextInfo: TextSettingsType); Примечания: См. в данной главе определение констант шрифта и описание типа TextSettingType. Ограничения: Должен использоваться графический режим. См. также: InitGraph, SetTextJustify, SetTextStyle, TextHeight, TextWidth. Пример: uses Graph; var Gd, Gm : integer; OldStyle : TextSettingsType; begin Gd := Detect; { перевести в графический режим } InitGraph(Gd, Gm, ''); if GraphResult < 0 then Halt(1); GetTextSettings(OldStyle); SetTextJustify(LeftText, CenterText); SetTextStyle(TriplexFont, VertDir, 4); OutTextXY(GetMaxX, div 2, GetMaxY div 2, 'Новый тип'); with OldStyle do begin { восстановить старый тип текста } SetTextJustify(Horiz, Vert); SetTextStyle(Font, Direction, CharSize); end; OutTextXY(0, TextHeight('H'), 'Снова старый тип'); Readln; CloseGraph; end. Процедура GetTime модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает установленное в операционной системе текущее время. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure GetTime(var hour, min, sec, ssec: Word); Примечания: Возвращаемые параметры принимают следующие зна- чения: hour (час) - от 0 до 23, min (минута) - от 0 до 59, sec (секунда) - от 0 до 59 и ssec (сотая доля секунды) - от 0 до 99. См. также: SetTime, GetDate, SetDate, UnpackTime. Процедура GetVerify модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает состояние флага проверки DOS. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure GetVerify(var Flag: Boolean); Примечания: Данная процедура возвращает состояние флага про- верки DOS. При сброшенном флаге (False) проверка при записи на диск не выполняется. При установленном флаге (True) для обеспече- ния правильности записи все операции записи на диск проверяются. См. также: SetVerify. Функция GetVersion модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает текущий номер версии Windows и DOS. Целевая платформа: Защищенный режим, Windows. Описание: function GetVersion: Longint; Примечания: Младшее слово возвращаемого значения содержит версию Windows. Старший байт задает вспомогательный номер версии (в виде двузначного десятичного номера), например, в Windows 3.1 младшим номером будет 10. Младший байт задает основной номер вер- сии. Старшее слово возвращаемого значения содержит номер версии DOS. Старший байт задает основной номер версии (в виде двузначно- го десятичного номера). Мдалший байт задает вспомогательный номер версии. Пример: uses WinAPI; { под Windows используйте также WinCrt } type TVersion = record WinMajor, WinMinor, DosMinor, DosMajor: Byte; end; var Version: Longint; begin Version := GetVersion; with TVersion(Version) do begin Writeln('Версия Windows ', WinMajor, '.', WinMinor); Writeln('DOS version ', DosMajor, '.', DosMinor); end; end. См. также: DosVersion. Процедура GetViewSettings модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позволяет пользователю выдать запрос о текущей области просмотра на экране и параметрах "вырезанного" изображе- ния. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure GetViewSettings(var ViewPort: ViewPortType); Примечания: Данная процедура возвращает переменную типа ViewPortType. Этот тип описан в модуле Graph (см. выше описание записи ViewPortType). Ограничения: Должен использоваться графический режим. См. также: SetViewPort, ViewPortType, ClearViewPort. Пример: uses Graph; var Gd, Gm : integer; ViewPortType = ViewPortType; begin Gd := Detect; { перевести в графический режим } InitGraph(Gd, Gm, ''); if GraphResult < 0 then Halt(1); GetViewSettings(ViePort); with ViewPort do begin Rectangle(0, 0, x2 - x1, y2 - y1); if Clip then OutText('Отсечение изображения не активно'); else OutText('Сегодня отсечение изображения не действует'); end; Readln; CloseGraph; end. Функция GetWinFlags модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает память и флаги системной конфигура- ции. Целевая платформа: Защищенный режим, реальный режим. Описание: function GetWinFlags: Longint; Примечания: Информацию о памяти и конфигурации системы вы можете получить с помощью флагов wf_XXXX, проверяя биты возвраща- емого GetWinFlags значения. См. описание флагов конфигурации fw_XXXX. В защищенном режиме DOS флаги wf_Standard, wf_Enchanced, wf_LargeFrame и wf_SmallFrame всегда равны нулю. Флаг fw_DPMI может использоваться для определения того, ра- ботают ли прикладная программа или библиотека под Windows или DOS в защищенном режиме. Пример: uses WinAPI; begin . . . if GetWinFlags and wf_DPMI <> 0 then { работает в защищенном режиме DOS } else { работает в под Windows } . . . end; См. также: Флаги конфигурации wf_XXXX. Функция GetX модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает Х-координату текущего указателя. Целевая платформа: Защищенный режим, реальный режим. Описание: function GetX: Integer; Примечания: Процедура GetХ зависит от области просмотра. Та- ким образом, ее значение всегда равно абсолютной Х-координате те- кущего указателя, минус ViewPort.х1. В следующем примере: 1. SetViewPort(0, 0, GetMaxX, GetMaxY, True); Перемещает текущий указатель в точку с абсолютными коор- динатами (0,0), а GetX возвращает значение 0. 2. MoveTo(5, 5); Перемещает текущий указатель в точку с абсолютными коор- динатами (5,5), а GetX возвращает значение 5. 3. SetViewPort(10, 10, 100, 100, True); Перемещает текущий указатель в точку с абсолютными коор- динатами (10,10), а GetX возвращает значение 0. 4. MoveTo(5, 5); Перемещает текущий указатель в точку с абсолютными коор- динатами (15,15), а GetX возвращает значение 5. Ограничения: Должен использоваться графический режим. См. также: процедуры GetViewSettings, GetY, InitGraph, MoveTo, SetViewPort. Пример: uses Graph; var GraphDriver, GraphMode : integer; x, y : integer; begin GraphDiver := Detect; InitGraph(GraphDriver,GraphMode,''); if Graphesult <> grOk then Halt(1); OutText('Начнем здесь.'); x := GetX; y := GetY; OutText(20,10,'Теперь перейдем сюда...'); OutText(x,y,'А теперь вернемся назад.'); Readln; CloseGraph; end. Функция GetY модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает Y-координату текущего указателя. Целевая платформа: Защищенный режим, реальный режим. Описание: function GetY: Integer; Примечания: Процедура GetY зависит от области просмотра. Та- ким образом, ее значение всегда равно абсолютной Y-координате те- кущего указателя. См. пример предыдущей функции. Ограничения: Должен использоваться графический режим. См. также: GetViewSettings, GetX, InitGraph, MoveTo, SetViewPort. Пример: uses Graph; var GraphDriver, GraphMode : integer; x, y : integer; begin GraphDiver := Detect; InitGraph(GraphDriver,GraphMode,''); if Graphesult <> grOk then Halt(1); OutText('Начнем здесь.'); x := GetX; y := GetY; OutText(20,10,'Теперь перейдем сюда...'); OutText(x,y,'А теперь вернемся назад.'); Readln; CloseGraph; end. Функция GlobalAlloc модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выделяет блок памяти в глобальной динамически распределяемой области памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalAlloc(Flags: Word; Bytes: Longint): THandle; Примечания: GlobalAlloc распределяет блок с атрибутами и размером, заданными параметрами Flags и Bytes, и возвращает опи- сатель блока. Если блок выделить нельзя, то возвращаемое значение равно 0. Администраторы памяти Windows и защищенного режима DOS под- держивают следующие типы блоков памяти: фиксированный (fixed), перемещаемый (moveable) и выгружаемый (discardable). Фиксирован- ный блок гарантированно остается в одном и том же месте линейной памяти. Перемещаемый блок может перемещаться в линейной памяти и освобождать место для других запросов, а выгружаемый блок может выгружаться из памяти, чтобы освободить место для других блоков. С помощью параметра Flags вы можете выбрать один из трех типов: ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї і Тип і Флаги і ГДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і Фиксированный і gmem_Fixed і і Перемещаемый і gmem_Moveable і і Выгружаемый і gmem_Moveable + gmem_Discardable і АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Кроме того, флаги gmem_ZeroInit и gmem_Norify поддерживаются как в Windows, так и в защищенном режиме DOS. Все другие флаги памяти gmem_XXXX в защищенном режиме DOS игнорируются. Если задан флаг gmem_ZeroInit, то блок будет заполняться нулями. Для выгру- жаемого блока задан флаг gmem_Notify, то при выгрузке блока вызы- вается процедура уведомления прикладной программы. При успешном выполнении GlobalAlloc она выделяет объем памя- ти не меньше запрошенного. Если выделено больше памяти, чем было запрошено, то прикладная программа может использовать весь объем. Чтобы определить фактический размер блока памяти, используйте функцию GlobalSize. Перед тем как обращаться к блоку памяти вы можете заблокиро- вать его с помощью функции GlobalLock, а когда закончите к нему обращаться, то нужно разблокировать его с помощью функции GlobalUnlock. GlobalLock возвращает полный 32-битовый указатель на первый байт в блоке. Смещение указателя всегда равно нулю. В защищенном режиме DOS селектор указателя всегда совпадает с опи- сателем блока, но в Windows это не всегда так. Чтобы освободить блок памяти, прикладная программа должна использовать функцию GlobalFree. Чтобы изменить размер или атри- буты выделенного блока памяти, прикладная программа может исполь- зовать функцию GlobalReAlloc. В Windows наибольший блок памяти, который вы можете распре- делить на процессоре 80286, на 1 мегабайт меньше 16. На процессо- ре 80386 это на 64К меньше 12мегабайт. В защищенном режиме DOS наибольший распределяемый блок равен 16 мегабайтам. Заметим, что администратор памяти защищенного ре- жима транслирует запросы на большие (> 64К) выгружаемые и переме- щаемые блоки. См. также: GlobalFree, GlobalLock, GlobalReAlloc, GlobalSize, GlobalUnlock, флаги памяти gmem_XXXX. Функция GlobalAllocPrt модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выделяет и блокирует блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalAllocPrt(Flags: Word; Bytes: Longint): THandle; Примечания: Эта функция комбинирует в одной операции функции GlobalAlloc и GlobalLock. Реализация GlobalAllocPrt соответствует функции, показанной ниже: function GlobalAlloc(Flags: Word; Bytes: Longint): THandle; begin GlobalAllocPtr := GlobalLock(GlobalAloc(Flags, Bytes)); end; Комбинируя часто используемые последовательности вызовов функций администратора памяти в одной операции, семейство функций GlobalXXXXPtr устраняет необходимость поддерживать блокировку и разблокировку блоков и позволяет прикладной программе работать вместо описателей с указателями. Ограничения: Функция GlobalAllocPtr не может использоваться для распределения выгружаемых блоков. См. также: GlobalFreePrt, GlobalPrtHandle, GlobalReAllocPrt. Функция GlobalCompact модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Упаковывает глобальную динамически распределяе- мую память. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalCompact(MinFree: Longint): Longint; Примечания: GlobalCompact пытается создать блок свободной памяти размером не менее MinFree байт, переупорядочивая перемеща- емые блоки памяти и освобождая ее от выгружаемых блоков. Возвра- щаемое значение - это число байт в наибольшем блоке памяти после упаковки и выгрузки блоков. Он может оказаться меньше MinFree. Если MinFree равно 0, то возвращаемое значение специфицирует число байт в наибольшем свободном блоке, который может создать администратор памяти после перемещения и выгрузки блоков. Ограничения: Если ваша прикладная программа передает возвра- щаемое GlobalCompact значение функции GlobalAlloc, то не исполь- зуйте gmem_NoCompact или gmem_NoDiscard. См. также: флаги памяти gmem_XXXX, GlobalAlloc. Функция GlobalDiscard модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выгружает блок глобальной памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalDiscard(Mem: THandle): THandle; Примечания: Эта функция выгружает блок памяти, заданный па- раметром Mem. Блок памяти должен быть выгружаемым (выделяться с флагом gmem_Discardable), а счетчик блокировки для него должен быть равен 0. Хотя GlobalDiscard удаляет блок глобальной памяти из памяти, его описатель остается допустимым. Прикладная программа может пе- редать описатель функции GlobalReAlloc для выделения другого бло- ка памяти, идентифицированного тем же описателем. См. также: GlobalReAlloc, флаги памяти gmem_XXXX. Функция GlobalDosAlloc модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Распределяет блок памяти, доступный в реальном режиме. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalDosAlloc(Bytes: Longint): Longint; Примечания: Эта функция выделяет блок глобальной памяти, ко- торый доступен как в реальном, так и в защищенном режиме. Пара- метр Bytes задает размер блока в байтах. Обеспечивает выделение блока в первом мегабайте линейного адресного пространства. Младшее слово возвращаемого значения содержит селектор бло- ка, а старшее слово - базовый адрес сегмента блока. Селектор ис- пользуется для доступа к блоку в защищенном режиме, а базовый ад- рес сегмента - для доступа к блоку в реальном режиме. Если адми- нистратор памяти не может выделить блок требуемого размера, то возвращается нулевое значение. Ограничения: Поскольку памяти для распределения объекта нем- ного, в прикладной программе следует использовать эту функцию только в случае крайней необходимости. См. также: GlobalDosFree. Функция GlobalDosFree модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Освобождает блок памяти, доступный в реальном режиме. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalDosFree(Selector: Word): Word; Примечания: Эта функция освобождает блок глобальной памяти, выделенный ранее с помощью функции GlobalDosAlloc. Параметр Selector определяет селектор для блока, соответствующего младшему слову значения, возвращаемого GlobalDOSAlloc. Возвращаемое значе- ние равно 0 в случае успешного выполнения и Selector в противном случае. См. также: GlobalDoaAlloc. Процедура GlobalFix модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Блокирует блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: procedure GlobalFix(Mem: THandle); Примечания: Эта процедура блокирует в линейной памяти блок, заданный параметром Mem, и увеличивает на 1 счетчик блокировки блока. Блок остается заблокированным (зафиксированным в памяти), пока счетчик блокировки через вызов GlobalUnfix не уменьшается до нуля. Эта процедура используется в основном для предотвращения пе- ремещения блоков при взаимодействии с кодом реального режима. Прикладным программам редко требуется фиксировать память в линей- ном адресном пространстве. См. также: GlobalUnfix. Функция GlobalFlags модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает информацию о блоке памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalDosFree(Mem: THandle): Word; Примечания: Старший байт возвращаемого значения содержит 0 или более следующих установленных флагов: ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї і Константа і Описание і ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і gmem_DDEShare і Блок может использоваться совместно. При-і і і меняет только для динамического обменаі і і данными (DDE). і і і і і gmem_Discardable і Блок может быть выгружаемым. і і і і і gmem_Discarded і Блок был выгружен. і і і і і gmem_Not_Banked і Блок не может быть банкируемым. і АДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Младший байт возвращаемого значения содержит счетчик блоки- ровки блока. Для получения значения счетчика блокировки вы можете использовать gmem_LockCount. Ограничения: На счетчик блокировки блока глобальной памяти влияют следующие функции: ЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДї і Увеличивают счетчик і Уменьшают счетчик і ГДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДґ і GlobalFix і GlobalUnfix і і GlobalLock і GlobalUnlock і і LockSegment і UnlockSegment і АДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДЩ См. также: флаги памяти gmem_XXXX, GlobalSize. Функция GlobalFree модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalFree(Mem: THandle): THandle; Примечания: GlobalFree освобождает блок памяти, заданный па- раметром Mem и делает недопустимым описатель блока памяти. Если функция выполняется успешно, то возвращается нулевое значение. В противном случае возвращается значение, равное Mem. Если объект памяти заблокирован, то есть имеет счетчик блокировки, больший 0, то GlobalFree не может использоваться для освобождения объекта. Ограничения: Использование описателя объекта освобождаемой памяти может вызвать общий сбой по нарушению защиты памяти. См. также: GlobalDiscard, GlobalFlags, GlobalLock. GlobalUnlock. Функция GlobalFreePtr модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разблокирует и освобождает блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalFreePtr(P: Pointer): THandle; Примечания: Данная функция комбинирует в одной операции функции GlobalUnlock и GlobalFree. Реализация функции GlobalFreePrt соответствует показанной ниже функции: function GlobalFreePrt(P: Pointer): THandle; var H: THandle; begin H := GlobalPtrHandle(P); GlobalUnock(H); GlobalFreePtr := GlobalFree(H); end; Комбинируя часто используемые последовательности вызовов функций администратора памяти в одной операции, семейство функций GlobalXXXXPtr устраняет необходимость поддерживать блокировку и разблокировку блоков и позволяет прикладной программе работать вместо описателей с указателями. См. также: GlobalAllocPrt, GlobalPtrHandle, GlobalReAllocPtr. Функция GlobalHandle модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает описатель блока памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalHandle(Mem: Word): Longint; Примечания: Данная функция возвращает описатель блока памя- ти, селектор которого задается параметром Mem. Младшее поле возв- ращаемого значения содержит описатель блока, а старшее - селектор блока. Если Mem не идентифицирует блок памяти, то возвращаемое значение равно 0. См, также: GlobalPtrHandle. Функция GlobalLock модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Блокирует блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalLock(Mem: THAndle): Pointer; Примечания: Данная функция блокирует блок памяти, заданный параметром Mem, и возвращает указатель на первый байт блока. Если блок не является выгружаемым, его счетчик блокировки увеличивает- ся на 1, и обеспечивается сохранение блока в памяти, пока его счетчик блокировки не уменьшается до 0 (с помощью вызова GlobalUnlock). При успешном выполнении GlobalLock возвращаемое значение представляет собой указатель на первый байт блока памяти. Если блок выгружен или Mem не является допустимым описателем, возвра- щаемое значение равно nil. См. также: GlobalSize, GlobalHandle, GlobalUnlock. Функция GlobalLRUNewest модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Перемещает блок памяти в самую "новую" последнюю используемую позицию в памяти (LRU). Целевая платформа: Защищенный режим, Windows. Описание: function GlobalLRUNewest(Mem: THAndle): THandle; Примечания: Данная функция перемещает заданный объект в са- мую "новую" последнюю позицию LRU, уменьшая шансы на выгрузку объекта, но это не предотвращает того, что в итоге блок может быть выгружен. Ограничения: GlobalLRUNewest полезно использовать только в том случае, если Mem - это выгружаемый объект. См. также: GlobalLRUOldest. Функция GlobalLRUOldest модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Перемещает блок памяти в самую "старую" послед- нюю используемую позицию в памяти (LRU). Целевая платформа: Защищенный режим, Windows. Описание: function GlobalLRUOldest(Mem: THAndle): THandle; Примечания: Данная функция перемещает заданный объект в са- мую "старую" последнюю позицию LRU, что делает его следующим выг- ружаемым объектом. Ограничения: GlobalLRUNewest полезно использовать только в том случае, если Mem - это выгружаемый объект. См. также: GlobalLRUNewest. Функция GlobalNotify модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает для текущей задачи процедуру уве- домления. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalNotify(NotifyProc: TFarProc); Примечания: Данная функция устанавливает для текущей задачи функцию уведомления. Администратор памяти вызывает процедуру уве- домления, когда распределенный с gmem_Notify блок памяти должен быть выгружен. Параметр NotifyProc должен быть адресом функции вызова со следующим описанием: function Notify(Mem: THAndle): Bool; export где Notify можете быть любым определенным пользователем именем. Заметим, что функция должна описываться с директивой export и на- ходиться в фиксированном сегменте кода. Кроме того, в Windows, если функция уведомления находится в прикладной программе (в от- личие от DLL), передаваемый GlobalNotify указатель NotifyProc должен создаваться с помощью MakeProcInstance. Когда администратор памяти вызывает функцию уведомления, в параметр Mem он передает описатель блока, который должен быть выгружен. Если функция уведомления возвращает значение True, то администратор памяти выгружает блок. Если возвращается значение False, то блок не выгружается. Ограничения: Вызов процедуры уведомления не гарантируется через стек, в котором она находится, и, следовательно, в ней не следует полагаться на сегмент стека. Кроме того, в процедуре уве- домления не следует вызывать никаких функций API, вызывающих пе- ремещения в памяти. См. также: GlobalReAlloc, флаги памяти gmem_XXXX. Функция GlobalPageLock модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Увеличивает для блока памяти счетчик блокировки страницы. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalPageLock(Selector: THandle): Word; Примечания: Данная функция увеличивает для блока памяти, за- данного параметром Selector, счетчик блокировки страницы. В улуч- шенном режиме Windows пока счетчик блокировки страницы имеет не- нулевое значение, блок не будет выгружаться на диск и остается в памяти по одному и тому же физическому адресу. Блок остается заб- локированным, пока счетчик блокировки страницы с помощью вызовов GlobalPageUnlock не станет равным нулю. Ограничения: Эта функция имеет смысл только в улучшенном ре- жиме Windows. В защищенном режиме DOS функции GlobalPageLock со- ответствует функция GlobalFix. См. также: GlobalPageUnlock. Функция GlobalPageUnLock модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Уменьшает для блока памяти счетчик блокировки страницы. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalPageUnLock(Selector: THandle): Word; Примечания: Данная функция уменьшает для блока памяти, за- данного параметром Selector, счетчик блокировки страницы. Блок должен быть ранее заблокирован с помощью функции GlobalPageLock. В улучшенном режиме Windows пока счетчик блокировки страницы име- ет ненулевое значение, блок не будет выгружаться на диск и оста- ется в памяти по одному и тому же физическому адресу в памяти. Блок остается заблокированным, пока счетчик блокировки страницы с помощью вызовов GlobalPageUnlock не станет равным нулю. Возвраща- емое значение определяет полученный в результате счетчик блоки- ровки. Если функция выполняется неуспешно, то результирующее зна- чение будет нулевым. Ограничения: Эта функция имеет смысл только в улучшенном ре- жиме Windows. В защищенном режиме DOS функции GlobalPageUnLock соответствует функция GlobalUnFix. См. также: GlobalPageLock. Функция GlobalPtrHandle модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает описатель блока памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalPtrHandle(P: Pointer): THandle; Примечания: Данная функция возвращает описатель блока памя- ти, адрес которого задан параметром P. Если P не идентифицирует блок памяти, то возвращается нулевое значение. Функцию GlobalPtrHandle можно использовать для того, чтобы найти описа- тель блока памяти, выделенного с помощью GlobalAllocPtr. См. также: GlobalAllocPrt, GlobalFreePrt, GlobalReAllocPtr. Функция GlobalReAlloc модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Изменяет размер или атрибуты блока памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalReAlloc(Mem: THandle; Bytes: Longint; Flags: Word): THandle; Примечания: Данная функция увеличивает или уменьшает размер блока памяти, заданного параметром Mem, на число байт Bytes. Па- раметр Flags определяет, как нужно перераспределить блок. Возвра- щаемое значение представляет собой новый описатель блока (см. ни- же) или 0, если блок не перераспределен. Если для фиксированного блока в параметре Flags установлен флаг gmem_Moveable, то блок можно перемещать в новый фиксирован- ный адрес. Если для выгружаемого блока в параметре Flags установлен флаг gmem_Moveable, а параметр Bytes равен 0, блок при нулевом значении счетчика блокировки выгружается. Если при увеличении размера блока в параметре Flags установ- лен флаг gmem_ZeroInit, дополнительное содержимое инициализирует- ся нулем. В GlobalReAlloc Windows поддерживает дополнительные флаги памяти gmem_XXXX, но в защищенном режиме DOS они игнорируются. Функция GlobalReAlloc возвращает новый описатель блока, ко- торый может отличаться от описателя, переданного функции, если старый или новый размер блока превышает 64К. Однако в тех случа- ях, когда и старый, и новый размер блока меньше 64К, GlobalReAlloc всегда может изменить размер блока без изменения описателя. Функцию GlobalReAlloc можно также использовать для изменения атрибутов блока памяти. Это можно сделать, установив в параметре Flags наряду с комбинацией gmem_Moveable и gmem_Discardable флаг gmem_Modify. Флаг gmem_Modify приводит к игнорированию параметра Bytes. См. также: GlobalDiscard, флаги памяти gmem_XXXX, GlobalAlloc. Функция GlobalReAllocPtr модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Изменяет размер или атрибуты блока памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalReAllocPtr(P: Pointer; Bytes: Longint; Flags: Word): Pointer; Примечания: Данная функция комбинирует в одной операции функции GlobalUnlock, GlobalReAlloc и GlobalLock. Реализация функции GlobalReAllocPtr соответствует показанной ниже функции: function GlobalReAllocPtr(P: Pointer; Bytes: Longint; Flags: Word): Pointer; var H: THandle; begin H: := GlobalPtrHandle(P); GlobalUnlock(H); GlobalReAllocPtr := GlobalLock(GlobalReAllock(H, Bytes, Flags)); end; Комбинируя часто используемые последовательности вызовов функций администратора памяти в одной операции, семейство функций GlobalXXXXPtr устраняет необходимость поддерживать блокировку и разблокировку блоков и позволяет прикладной программе работать вместо описателей с указателями. См. также: GlobalFreePrt, GlobalAllocPrt, GlobalReAllocPrt. Функция GlobalSize модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает размер блока памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalSize(Mem: THandle): Longint; Примечания: Данная функция возвращает значение размера блока памяти, заданного параметром Mem, в байтах. Если описатель Mem недопустимы, или блок памяти выгружен, то возвращается ноль. Иногда фактический размер блока памяти, запрошенный при распреде- лении. Для выгружаемых блоков перед вызовом функции GlobalSize для проверки того, не выгружена ли заданная память, прикладная программа должны вызывать функцию GlobalFlags. См. также: GlobalFlags. Функция GlobalUnfix модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разблокирует блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalUnfix(Mem: THandle): Bool; Примечания: Данная функция уменьшает значение счетчика бло- кировки блока памяти, заданного параметром Mem. Если значение счетчика блокировки становится равным нулю, то блок разблокирует- ся и объект перемещается или выгружается. Если значение счетчика блокировки стало равным нулю, то возвращаемое значение равно False, в противном случае оно равно True. Каждый раз, когда прикладная программа вызывает для блока памяти функцию GlobalFix, в итоге она всегда должна вызывать для этого блока GlobalUnfix. См. также: GlobalFix, GlobalFlags. Функция GlobalUnlock модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Разблокирует блок памяти. Целевая платформа: Защищенный режим, Windows. Описание: function GlobalUnlock(Mem: THandle): Bool; Примечания: Данная функция уменьшает значение счетчика бло- кировки блока памяти, заданного параметром Mem. Если блок выгру- жаемый, значение его счетчикам блокировки уменьшается на 1. Если значение счетчика блокировки становится равным нулю, то блок разблокируется и объект перемещается или выгружается. Если значе- ние счетчика блокировки стало равным нулю, то возвращаемое значе- ние равно False, в противном случае оно равно True. Каждый раз, когда прикладная программа вызывает для блока памяти функцию GlobalLock, в итоге она всегда должна вызывать для этого блока GlobalUnLock. См. также: GlobalLock, GlobalFlags. Процедура GotoXY модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позиционирует курсор в точку с заданными коорди- натами. Целевая платформа: Защищенный режим, реальный режим. Описание: procvedure GoToXY(X, Y: Byte); Примечания: Курсор перемещается в ту позицию внутри текущего окна, которая задана координатами Х и Y (Х задает столбец, Y за- дает строку). Верхний левый угол задается координатами (1,1). Эта процедура зависит от текущего окна. Например: Window(1,10,60,20); GotoXY(1,1); переместит курсор в верхний левый угол активного окна (абсолютные координаты (1,10)). Ограничения: Если задаются недопустимые координаты, то обра- щение к процедуре игнорируется. См. также: Window, WhereX, WhereY. Процедура GotoXY модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Позиционирует курсор в точку с заданными коорди- натами. Целевая платформа: Windows. Описание: procvedure GoToXY(X, Y: Byte); Примечания: Верхний левый угол задается координатами (1,1). Переменная Cursor устанавливается в (X-1,Y-1), поскольку в ней хранится позиция относительно точки (0,0), а не (1,1). Подпрограммы GotoXY, WhereX и WhereY предназначены в основ- ном для совместимости с модулем Crt, предусмотренной в Borland Pascal для DOS. Отсчитываемые от 1 координаты этих подпрограмм не согласуются с остальными подпрограммами и переменными модуля WinCrt, поэтому вместо них рекомендуется использовать подпрограм- му CursorTo и переменную Cursor. См. также: WhereX, WhereY. Процедура GraphDefaults модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Сбрасывает установленные для графических средств параметры. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure GraphDefaults; Примечания: Возвращает текущий указатель в нулевую точку и устанавливает для графической системы параметры: - область просмотра; - палитру; - фоновый и основной цвет; - тип линии и образец линии; - тип заполнителя, образец заполнителя и цвет заполнителя, принятые по умолчанию. Ограничения: Должен использоваться графический режим. См. также: InitGraph. Функция GraphErrorMsg модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Для заданного кода ошибки (ErrorCode) возвращает строку сообщения об ошибке. Целевая платформа: Защищенный режим, реальный режим. Описание: function GraphErrorMsg(ErrorCode: Integer): String; Примечания: Данная функция возвращает строку, содержащую со- общение об ошибке, соответствующее коду ошибки графической систе- мы. Это облегчает вывод описывающего ошибку сообщения в пользова- тельской программе. Например: "Device driver not found" (не найден драйвер устройства) вместо: "error code - 3" (код ошибки - 3). Ограничения: Должен использоваться графический режим. См. также: GraphResult, DetectGraph, InitGraph. Пример: uses Graph; var GraphDriver, GraphMode : integer; ErrorCode : integer; begin GraphDiver := Detect; InitGraph(GraphDriver,GraphMode,''); if Graphesult <> grOk then Halt(1); begin Writeln('Ошибка графики: ',GraphErrorMsg(ErrorCode); Readln; Halt(1); end; Line(0, 0, GetMaxX, GetMaxY); Readln; CloseGraph; end. Функция GraphResult модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для последней графической операции код ошибки. Целевая платформа: Защищенный режим, реальный режим. Описание: function GraphResult: Integer; Примечания: Возвращает код ошибки для последней графической операции. См. ниже список констант grXXXX. GraphResult устанавливают следующие подпрограммы: Bar GetGraphMode SetAllPalette Bar3D ImageSize SetFillPattern ClearViewPort InitGraph SetFillStyle CloseGraph InstallUserDriver SetGraphBufSize DetectGraph InstallUserFont SetGraphMode DrawPoly PieSlice SetLineStyle FillPoly RegisterBGIdriver SetPalette FloodFill RegisterBGIfont SetTextJustify SetTextStyle Заметим, что GraphResult (код ошибки) сбрасывается в 0 после обращения к данной процедуре (аналогично функции IOResult). Таким образом пользователю следует сохранить значение кода ошибки во временной переменной и затем проверить ее. См. также: GraphErrorMsg, константы grXXXX. Пример: uses Graph; var ErrorCode : integer; GrDriver, GrMode : integer; begin GrDriver := Detect; InitGraph(GrDriver,GrMode); ErrorCode := Grapesult; { проверка на ошибки } if ErorCode <> grOk then begin Writeln('Ошибка графики: '); Writeln(GraphErrorMsg(ErroeCode)); Writeln('Программа аварийно завершила работу!...'); Halt(1); end; { выполнить некоторые графические функции } ClearDevice; Rectangle(0,0,GetMaxX,GetMaxY); Readln; CloseGraph; end. Процедура Halt модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Останавливает выполнение программы и возвращает управление операционной системе. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure Наlt [ (ExtCode: Word) ]; Примечания: Параметр ExtCode (код завершения) представляет собой необязательное выражение длиной в слово, которое задает код завершения программы. Процедура Наlt без параметров соответствует вызову Наlt(0). Код завершения может проверяться порождающим про- цессом с помощью функции EхitCode модуля Dos или с помощью про- верки ERRORLEVEL в командном файле DOS. Заметим, что процедура Наlt инициализирует выполнение имею- щихся в модуле процедур завершения Exit. Дополнительную информа- цию вы можете найти в Главе 22 ("Вопросы управления") "Руководс- тва по языку". См. также: RunError, Exit. Функция Hi модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает старший байт аргумента. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function Нi(x): Byte; Примечания: Параметр x представляет собой выражение целого типа или слово. Функция Нi возвращает старший байт x в виде зна- чения без знака. См. также: Lo, Swap. Пример: var w : word; begin w := Hi($1234); { $12 } end; Функция HiByte модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает старший байт аргумента типа Word. Целевая платформа: Защищенный режим, Windows. Описание: function НiByte(A: Word): Byte; Примечания: Функция НiByte возвращает старший байт значения A. См. также: LoByte. Функция High модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает старший байт аргумента. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function Нigh(x); Примечания: Параметр x представляет собой идентификатор ссы- лочной переменной. Обозначенный x тип или тип переменной, обозна- ченной x, должен быть порядковым типом, массивом или строковым типом. Для порядкового типа High возвращает старшее значение в диапазоне индексного типа массива. Для строкового типа High возв- ращает описанный размер строки. Для открытого массива или строко- вого параметра High возвращает значение типа Word, показывая чис- ло элементов в фактическом параметре, минус 1. См. также: Low. Пример: function Sum(var X: array of Real): Real; var I: Word; S: Real; begin S: := 0; for I := 0 to High(X) do S := S + X[I]; Sum := S; end; Процедура HighVideo модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает для символов подсветку. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure HighVideo; Примечания: В модуле Crt имеется байтовая переменная TextAttr, которая используется для хранения текущих атрибутов изображения. Процедура HighVideo устанавливает для цвета символов переменной TextAttr бит подсветки. Таким образом, цвета 0..7 отображаются в цвета 8..15. См. также: NormVideo, LowVideo, TextColor, TextBackGround. Пример: uses Crt; begin TextAttr := LightGray; HighVideo; { цвет становится белым } end; Функция HiWord модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает старшее слово значения LongInt. Целевая платформа: Защищенный режим, Windows. Описание: function НiWord(A: Longint): Word; Примечания: Функция НiWord возвращает старший байт значения A. См. также: LoWord. Процедура ImageSize модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает число байт, необходимых для сохране- ния прямоугольной области экрана. Целевая платформа: Защищенный режим, реальный режим. Описание: function ImageSize(x1, y1, x2, y2: Integer): Word; Примечания: Параметры x1, y1, x2 и y2 определяют прямоуголь- ную область экрана. Функция ImageSize определяет число байт, не- обходимых функции Getimage для сохранения заданной области экра- на. Размер двоичного образа области экрана включает в себя память размером в несколько слов. В первом слове хранится ширина облас- ти, а во втором - высота. Следующие несколько слов содержат атри- буты самой области. Последнее слово резервируется. Если объем памяти, необходимый для сохранения области, пре- вышает или равен 64К, то возвращается значение 0 и функция GraphResult возвращает значение -11 (grError). Ограничения: Должен использоваться графический режим. См. также: GetImage, PutImage. Пример: uses Graph; var Gd, Gm : integer; P : pointer; Size : word; begin Gd := Detect; InitGraph(Gd, Gm, ''); if GraphResult <> grOk then Halt(1); Bar(0, 0, GetMaxX, GetMaxY); Size := ImageSize(10,20,30,40) GetMem(P, Size) { Выделить память в динамически распределяемой области } GetImage(10,20,30,40,P^); Readln; ClearDevice; PutImage(100, 100, P^, NormalPut); Readln; CloseGraph; end. Процедура Inc модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Увеличивает значение переменной. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure Inc(x [ ; n : longint ] ); Примечания: Параметр x представляет собой переменную пере- числимого типа, а n - целочисленное выражение. Значение x увели- чивается на 1 (или на n в случае явного задания n). То есть Inс(x) соответствует x := x+1, а Inс(x,n) соответствует x := x+n. Функция Inс порождает оптимизированный код и особенно полезна в больших циклах. См. также: Dec, Pred, Succ. Пример: var IntVar : intege; LongIntVar : longint; begin Inc(IntVar); { intVar := IntVar + 1 } Inc(LongIntVar); { LongIntVar := LongIntVar + 5 } Процедура Include модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Включает элемент в множество. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure Include(var S: set of T; I: T); Примечания: S - это переменная множественного типа, а I - выражение типа, совместимого с базовым типом S. Заданный I эле- мент включается в множество, заданное S. Конструкция: Include(S, I) соответствует: S := S + [I] но процедура Include генерирует более эффективный код. См. также: Exclude. Процедура InitGraph модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Инициализирует графическую систему и переводит аппаратуру в графический режим. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure InitGraph(var GrDriver: Integer; var Mode: Integer; Path : String); Примечания: И параметр GrDriver (графический драйвер), и па- раметр Mode (графический режим) являются параметрами-переменными (var). Если параметр GrDriver равняется Detect, то выполняется вы- зов процедуры DetectGraph, загружается соответствующий драйвер и выбирается графический режим. Если параметр GrDriver не равен 0, то значение этого пара- метра рассматривается, как номер драйвера. Этот драйвер загружа- ется и система переводится в режим, определяемый параметром Mode. Заметим, что если значение автоматического распознавания аппара- туры изменено, то вы должны для требуемого драйвера обеспечить правильный параметр Mode. Параметр Path определяет маршрут доступа к каталогу, в кото- ром находятся графические драйверы. Если этот параметр пуст, то подразумевается, что файлы драйверов содержатся в текущем катало- ге. Обычно InitGraph загружает графический драйвер, выделяя для него память (с помощью вызов GraphGetMem), затем загружает с дис- ка соответствующий файл .BGI. В качестве альтернативы этой дина- мической схеме загрузки вы можете скомпоновать графический драй- вер (или несколько драйверов) непосредственно с выполняемым кодом своей программы. Это можно сделать, конвертировав сначала файл .BGI в файл .OBJ (с помощью утилиты BINOBJ), затем включив для регистрации графических драйверов в исходный код вызовы RegisterBGIdriver (перед вызовом InitGraph). При построении своей программы вы должны выполнить компоновку с файлами .OBJ зарегист- рированных драйверов. Вы можете также загрузить драйвер BGI в ди- намически распределяемую область памяти, а затем зарегистрировать его с помощью RegisterBGIdriver. С помощью обращения к процедуре GraphGetМем в динамически распределяемой области для графического драйвера выделяется па- мять. При обращении к процедуре CloseGraph эта память освобожда- ется. После обращения к процедуре InitGraph для параметра GrDriver будет установлено значение, соответствующее текущему графическому драйверу, а для параметра Mode будет установлено значение, соот- ветствующее текущему графическому режиму. Если происходит ошибка, то процедура GraphDriver и функция GraphResult возвращают одно из значений grXXXX: grNotDetected, grFileNotFound, grInvalidDriver, grNoLoadMem или grInvalidMode (см. выше). Процедура InitGraph сбрасывает все графические параметры (текущий указатель, палитру, цвет, область просмотра и т.д.) и устанавливает для них предусмотренные по умолчанию значения. Для установки поставляемых фирмами драйверов можно использо- вать процедуру InstallDriver (более подробная информация содер- жится в описании процедуры InstallUserDriver). Для каждого поддерживаемого графического драйвера определен ряд полезных констант (см. в начале главы). Ограничения: Должен использоваться графический режим. Если вы работаете с графическим интерфейсом фирмы Borland (BGI) и пла- той Zenith Z-449, код автообнаружения Borland Pascal всегда будет распознавать улучшенный режим EGA. Если этот режим несовместим с вашим монитором, то выберите в вызове InitGraph другой режим. Кроме того, Pascal не может автоматически распознавать графичес- кую плату IBM 8514 (логика автообнаружения распознает ее как VGA). Таким образом, чтобы использовать IBM 8514, переменной GraphDriver нужно при вызове InitGraph присвоить значение IBM8514 (которое определено в модуле Graph). При наличии платы IBM 8514, если вы не эмулируете режим VGA, использовать DetectGraph (или Detect с InitGraph) не следует. См. также: CloseGraph, DetectGraph, RestoreCrtMode, SetGraphMode, GraphResult, InstallUserDriver, SetGraphBufSize, RegisterBGIDriver, RegisterBGIFont, GraphDefaults. Пример: uses Graph; var grDriver : integer; grMode : integer; EmCode : integer; begin gDriver := Detect; InitGraph(grDiver,grMode,''); ErrCode := GraphResult; it ErrCode <> grOk then begin { выполнить графические функции } Line(0, 0, GetMaxX, GetMaxY); Readln; CloseGraph; end else Writeln('Ошибка графики : ',GraphErrorMsg(ErrCode)); end. Процедура InitWinCrt модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает окно CRT (если оно еще не создано). Целевая платформа: Windows. Описание: procedure InitCrt; Примечания: Подпрограммы Read, Readln, Write или Writeln с файлом, присвоенным CRT, для обеспечения существования окна CRT автоматически вызывают процедуру InitWinCrt. Для определения характеристик окна CRT InitWinCrt использует переменные WindowOrg, WindowSize, ScreenSize и WindowTitle. Процедура Insert модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Вставляет в строку подстроку. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure Insert(String1: String; var s: String; Indx: Integer); Примечания: Параметр String1 представляет собой выражение строкового типа. Параметр s - переменная строкового типа любой длины. Параметр Indx является выражением целого типа. Данная про- цедура вставляет строку, задаваемую параметром String1, в строку, задаваемую параметром s, начиная с позиции, определяемой парамет- ром Indx. Если получившаяся в результате строка превышает 256 символов, то она усекается до 255 символов. См. также: Delete, Copy, ConCat, Pos, Length. Пример: var s : string; begin s := 'Honest Lincoln'; Insert('Abe',s,8); { Honest Abe Lincoln } end; Процедура InsLine модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Начиная с позиции курсора вставляет пустую стро- ку. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure InsLine; Примечания: Все строки, расположенные ниже добавленной стро- ки, перемещаются на одну строку вниз, а нижняя строка исчезает с экрана (при этом используется программа прокрутки изображения на экране базовой системы ввода-вывода). Всем позициям символов новой строки присваивается значение пробела с текущими атрибутами текста. Таким образом, если проце- дурой TextВасkGround не установлен фоновый черный цвет, то новая строка имеет черный фоновый цвет. Данная процедура зависит от используемого окна. Например: Window(1, 10, 60, 20); InsLine; приведет к вставке строки длиной в 60 символов в точке с абсолют- ными координатами (1,10). См. также: DelLine, Window. Функция InstallUserDriver модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Включает в таблицу драйверов устройств BGI (Borland) драйверы, поставляемые другими фирмами. Целевая платформа: Реальный режим, защищенный режим. Описание: function InstallUserDriver(Name: String; AutoDetectPtr: Pointer): Integer; Примечания: Данная процедура позволяет вам использовать драйверы устройств, отличающиеся от драйверов фирмы Borland. Па- раметр Name представляет собой имя нового драйвера устройства. AutoDetectPrt - это указатель на необязательную функцию автомати- ческого распознавания, которая может прилагаться к новому драйве- ру. Эта функция автоматического распознавания не требует парамет- ров и возвращает целое значение. Если внутренняя таблица драйверов заполнена, то процедура InstallUserDriver возвращает значение -11 (grError). В противном случае данная процедура присваивает и возвращает для нового драй- вера устройства номер этого драйвера. Драйвер пользователя можно использовать двумя способами. Предположим, у вас имеется новая видеоплата SGA и фирма, изготав- ливающая эту плату, поставляет для нее драйвер SGA.BGI. Наиболее простой способ использования этого драйвера состоит в его уста- новке с помощью процедуры InstallUserDriver и передачи возвращае- мого значения (присвоенного номера драйвера) непосредственно про- цедуре InitGraph: var Driver, Mode : integer; begin Driver := InstallUserDriver('SGA.BGI', Nil); if Driver = grError then { таблица переполнена? } Halt(1); Mode := 0; { каждый драйвер поддерживает режим 0 } InitGraph(Driver, Mode, ''); { изменить автоматическое распознавание } ... { нет графики } end. Значение nil параметра AutoDetectPtr при обращении к проце- дуре InstallUserDriver показывает, что для платы SGA функция ав- томатического распознавания отсутствует. Другой, более общепринятый способ состоит в использовании этого драйвера для связи функции автоматического распознавания, которая будет вызываться при работе процедуры InitGraph. Предпо- ложим, фирма-изготовитель платы SGA предоставила вам функцию ав- томатического распознавания, которая выглядит следующим образом: {$F+} function DetectSGA : integer; var Found : Boolean; begin DetectSGA := grError; { предположим, плата отсутствует } Found := ... { поиск соответствующего аппарат- ного обеспечения } if not Found then Exit; { код возврата = -11 } DetectSGA := 3; { возвратить рекомендуемый и наз- начаемый по умолчанию видео- режим } end. {$F-} Задача функции DetectSGA состоит в поиске во время работы программы аппаратного обеспечения SGA. Если плата SGA не обнару- жена, то данная функция возвращает значение -11 (grError). В про- тивном случае возвращаемое значение представляет собой принятый по умолчанию видеорежим для платы SGA (обычно он обеспечивает на- илучшее сочетание цвета и разрешающей способности, которые можно достичь на данном аппаратном обеспечении). Заметим, что эта функция не требует параметров и возвращает целочисленное значение со знаком. Она должна иметь дальний тип обращения. При установке драйвера (путем обращения к процедуре InstallUserDriver) вы передаете наряду с именем файла, содержаще- го драйвер устройства, адрес DetectSGA: var Driver, Mode : integer; begin Driver := InstallUserDriver('SGA.GBI', @DetectSGA); if Driver = grError then Halt(1); Driver := Detect; { не будем учитывать драйвер SGA, доверимся средствам автоматического распознавания } InitGraph(Driver, Mode, ''); . . . end. После того, как вы установите драйвер устройства и функцию автоматического распознавания, можно вызвать процедуру InitGraph, которая выполнит обычный процесс автоматического распознавания. Перед тем, как процедура InitGraph вызывает свою встроенную функ- цию автоматического распознавания (DetectGraph), она вызывает сначала функцию DetectSGA. Если DetectSGA не найдет аппаратных средств SGA, то возвращается значение -11 (grError), а процедура InitGraph продолжит выполнение обычного процесса автоматического распознавания (который также может включать в себя вызов пользо- вательских функций автоматического распознавания в том порядке, в котором они были установлены). Если же функция DetectSGA опреде- лит наличие SGA, то она возвращает неотрицательное значение режи- ма, а InitGraph найдет и загрузит файл SGA.BGI, переведет аппа- ратное обеспечение в нужный режим (рекомендованный функцией DetectSGA) и, наконец, передаст управление вашей программе. См. также: InitGraph, RegisterBGIDriver. Пример: uses Graph; var Driver, Mode, TestDriver, ErrCode : integer; {$F+} function TestDetect : integer; { функция автоматического распознавания: если имеются соот- ветствующие аппаратные средства, она возвращает значение, равное соответствующему принимаемому по умолчанию режиму } begin TestDetect := 1; { по умолчанию режим = 1 } end; {$F-} begin { установить драйвер } TestDriver := InstallDriver('TEST', @TestDetect); if GraphResult <> grOk then begin Writeln('Ошибка при установке драйвера'); Halt(1); end; Driver := Detect; { перейти в графический режим } InitGraph(Driver, Mode, ''); ErrCode := GraphResult; If ErrCode <> grOk then begin Writeln('Устанавливаемый драйвер поддерживается...'); Readln; CloseGraph; end. Функция InstallUserFont модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Устанавливает новый шрифт, не предусмотренный в системе фирмы Borland (BGI). Целевая платформа: Реальный режим, защищенный режим. Описание: function InstallUserFont(Name: String): Integer; Примечания: Параметр Name представляет собой имя файла век- торного шрифта. Функция InstallUserFont возвращает номер шрифта, который можно передать процедуре SetTextStyle для выбора этого шрифта. Если внутренняя таблица шрифтов переполнена, то возвраща- ется значение 0 (DefaultFont). Прочее: См. также процедуру SetTextStyle. Пример: uses Graph; var Driver, Mode : integer; TestFont : integer; begin TestFont := InstallUserFont('TEST'); { установить шрифт } if GraphResult <> grOk then begin Writeln('Ошибка при установке шрифта TestFont; будет использоваться DefaultFont'); Readln; end; Driver := Detect; { перевести в графический режим } InitGraph(Driver, Mode, ''); if GraphResult <> grOk then Halt(1); SetTextStyle(TestFOnt, HorizDir, 2); { использовать новый шрифт } OutText('Поддерживается новый установленный шрифт...'); Readln GloseGraph; end. Функция Int модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает целую часть аргумента. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function Int(x : Real): Real; Примечания: Параметр x представляет собой выражение вещест- венного типа. Результатом будет целая часть x, то есть x округля- ется в сторону нуля. См. также: Frаc, Trunc, Round. Пример: var r : real; begin r := Int(123.456); { 123 } r := Int(-123.456); { -123 } end. Процедура Intr модуль Dos, WinDos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выполняет заданное программное прерывание. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: procedure Intr(IntNum: Byte; var Regs: Registers); { DOS } procedure Intr(IntNum: Byte; var Regs: TRegisters);{Windows} Примечания: Параметр IntNum - это номер программного преры- вания (0...255). TRegisters является записью, определенной в мо- дуле WinDos (см. описание регистрового типа). Перед выполнением указанного программного прерывания функция Intr, используя запись Rеgs, загружает регистры AХ, BХ, CХ, DХ, ВР, SI, DI, DS и ЕS процессора 8086. После того, как прерывание будет выполнено, содержимое регистров AХ, BХ, CХ, DХ, ВР, SI, DI, DS, ES и регистров флагов опять сохраняется в записи Regs. Для получения более подробной информации по разработке про- цедур обработки прерываний см. раздел "Обработка прерываний" в Главе 22 "Руководства по языку". Ограничения: Программные прерывания, для которых на входе требуется задание определенных значений в SР или SS или изменяют значения SР и SS на выходе, с использованием данной процедуры вы- полняться не могут. См. также: процедуру MsDos. Функция IOResult модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает целое значение, представляющее собой состояние последней выполненной операции ввода-вывода. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function IOResult: Integer; Примечания: Чтобы перехватить ошибки ввода-вывода с помощью функции IORеsult, проверка ввода-вывода должна быть выключена (директива компилятора {$I-}). Если проверка ввода-вывода выклю- чена и происходит ошибка ввода-вывода, то, пока выполняется обра- щение к функции IORеsult, все последующие операции ввода-вывода игнорируются. Обращение в функции IORеsult сбрасывает ее внутрен- ний флаг ошибки. Перечень возвращаемых кодов ошибок приведен в Главе 4. Зна- чение 0 отражает успешное выполнение операции ввода-вывода. Пример: var f : file of byte; begin { получить командную строку с именем файла } Assign(f, ParamStr(1)); {$I-} Reset(f); {$I+} if IOResult = 0 then Writeln('Размер файла в байтах :',FileSize(f)); else Writeln('Файл не найден'); end. Процедура Keep модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Процедура Кееp (завершить работу и оставить в памяти) прерывает работу программы и оставляет ее резидентной в памяти. Целевая платформа: Реальный режим, защищенный режим. Описание: procedure Keep(Code: Word); Примечания: Весь код программы, включая сегмент данных, сег- мент стека и динамически распределяемую область, остается рези- дентным в памяти. Поэтому необходимо убедиться в том, что с по- мощью директивы компилятора $М вы задали максимальный размер динамически распределяемой области. Параметр Code соответствует коду завершения, передаваемому стандартной процедуре Наlt. Ограничения: Данной процедурой следует пользоваться с осто- рожностью. Программы, завершающие работу и остающиеся резидентны- ми в памяти, довольно сложны, и для них не предусмотрено никакой другой поддержки. Более подробная информация содержится в техни- ческой документации по DOS. См. также: DosExitCode. Функция KeyPressed модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает значение Truе, если на клавиатуре на- жата клавиша и False в противном случае. Целевая платформа: Реальный режим, защищенный режим. Описание: function KeyPressed: Boolean; Примечания: Символ (или символы) остаются в буфере клавиату- ры. Данная процедура не распознает клавиш перевода регистра, та- ких, как Shift, Аlt, NumLock и т.д. Клавишу можно считать с по- мощью функции ReadKey. См. также: ReadKey. Пример: uses Crt; begin repeat Write('Xx'); { заполнять экран, пока нажата кла- виша } until KeyPressed; end; Функция KeyPressed модуль WinCrt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает значение Truе, если на клавиатуре на- жата клавиша и False в противном случае. Целевая платформа: Windows. Описание: function KeyPressed: Boolean; Примечания: Символ (или символы) остаются в буфере клавиату- ры. Данная процедура не распознает клавиш перевода регистра, та- ких, как Shift, Аlt, NumLock и т.д. Клавишу можно считать с по- мощью функции ReadKey. См. также: ReadKey. Пример: uses Crt; begin repeat Write('Xx'); { заполнять экран, пока нажата кла- виша } until KeyPressed; end; Функция Length модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает динамическую длину строки. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: Length(s: String): Integer; Примечания: Параметр s представляет собой выражение строко- вого типа. Результатом будет длина s. См. также: Concat, Copy, Delete, Insert, Pos. Пример: var s : string; i : word; begin s := 'abc'; for i := 1 to Lenth(s) do s[i] := UpCase(s[i]); Writeln(s); { ABC } end. Процедура Line модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Рисует прямую линию из точки (x1,y1) в точку (x2,y2). Целевая платформа: Реальный режим, защищенный режим. Описание: procedure Line(x1, y1, x2, y2: Integer); Примечания: Рисует прямую, толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Для определения того, будет ли строка копироваться на экран или выводиться с использованием операции XOR, применяйте SetWriteMode. Заметим, что MoveTo(100,100); LineTo(200,200); эквивалентно LineTo(100,100,200,200); MoveTo(200,200); Используйте данную процедуру только в том случае, когда те- кущий указатель находится в одном из концов строки, или когда вы хотите, чтобы позиция текущего указателя после вычерчивания линии автоматически изменилась. Заметим, что линия не изменяет текущий указатель. Ограничения: Должен использоваться графический режим. Кроме того, при изображении горизонтальной линии подпрограмма Bar рабо- тает быстрее, чем Line. См. также: LineTo, LineRel, SetWriteMode, GetLineStyle, MoveTo, Rectangle, SetColor, SetLineStyle. Пример: uses Crt, Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> 0 then Halt(1); Randomize; repeat Line(Random(200),Random(200),Random(200),Random(200)); until KeyPressed; Readln; CloseGraph; end. Процедура LineRel модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Проводит прямую в точку, заданную относительным расстоянием от текущего указателя (CP). Целевая платформа: Реальный режим, защищенный режим. Описание: procedure LineRel(Dx,Dy: Integer); Примечания: Данная процедура вычерчивает прямую линию из те- кущей точки в точку, заданную относительным расстоянием (Dх,Dу) от текущего указателя. Процедура рисует прямую, толщина и тип ко- торой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Относительные команды перемещения и рисова- ния полезны при вычерчивании различных объектов на экране, у ко- торых начальная точка может быть изменена (чтобы, например, вы- чертить ту же самую фигуру в другом месте экрана). Для определе- ния того, будет ли строка копироваться на экран или выводиться с использованием операции XOR, применяйте SetWriteMode. Ограничения: Должен использоваться графический режим. См. также: GetLineStyle, Line, LineTo, MoveRel, MoveTo, SetLineStyle, SetWriteMode. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> 0 then Halt(1); begin MoveTo(1,2); LineRel(100,100); { провести прямую в точку (101,102) } end; Readln; CloseGraph; end. Процедура LineTo модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Рисует прямую линию из точки, в которой находит- ся текущий указатель, в точку (X,Y). Целевая платформа: Реальный режим, защищенный режим. Описание: procedure LineTo(X, Y: Integer); Примечания: Рисует прямую, толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Заметим, что операторы: MoveTo(100, 100); LineTo(200, 200); эквивалентны вызову: Line(100, 100, 200, 200); Первый метод требует больше времени для выполнения и больше- го объема памяти для выполняемого кода. Используйте процедуру LineТо только когда текущий указатель находится в одном из концов прямой. Отметим, что второй метод не изменяет значения текущего указателя. Процедура LinеТо перемещает текущий указатель в точку (X,Y). Ограничения: Должен использоваться графический режим. См. также: GetLineStyle, Line, LineRel, MoveTo, MoveRel, SetLineStyle, SetWriteMode. Пример: var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> 0 then Halt(1); Randomize; repeat LineTo(Random(200),Random(200)); until KeyPressed; Readln; CloseGraph; end. Функция Ln модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает натуральный логарифм аргумента. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function Ln(x: Real): Real; Примечания: Параметр x является выражением вещественного ти- па. Результатом будет натуральный логарифм выражения x. См. также: Exp. Функция Lo модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает младший байт аргумента. Целевая платформа: Реальный режим, защищенный режим, Windows. Описание: function Lо(x): Byte; Примечания: Параметр x - это параметр целого типа или пара- метр длиной в слово. Функция Lо возвращает младший байт x в ка- честве беззнакового значения. См. также: Hi, Swap. Пример: var w : word; begin w := Lo($1234); { $34 } end. Функция LoadLibrary модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Загружает библиотечный модуль. Целевая платформа: Защищенный режим, Windows. Описание: function LоadLibrary(LibFileName: PChar): THandle; Примечания: Параметр LibFileName должен указывать на завер- шающуюся нулем строку с именем загружаемого файла DLL. Возвращае- мое значение - это описатель загруженной библиотеки в случае ус- пешного выполнения функции и значение < 32 (код ошибки) в против- ном случае. В Windows, если параметр LibFileName не задает диск и ката- лог, LoadLibrary будет выполнять поиск в следующих каталогах (в указанном порядке): * в текущем каталоге; * в каталоге Windows (имя маршрута этого каталога возвращает функция GetWindowsDirectory); * в системном каталоге Windows (имя маршрута этого каталога возвращает функция GetSystemDirectory); * в каталогах, перечисленных в переменной операционной среды PATH. В защищенном режиме DOS, если параметр LibFileName не задает диск и каталог, LoadLibrary будет выполнять поиск в следующих ка- талогах (в указанном порядке): * в текущем каталоге; * в каталоге, содержащем файл .EXE текущей прикладной прог- раммы; * в каталогах, перечисленных в переменной операционной среды PATH. Значения ошибок, возвращаемых LoadLibrary, перечислены в едующей таблице: ДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї начение і Смысл і ДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ 0 і Нет памяти, запорчен выполняемый файл, либо переме-і і щения недопустимы. і і і 2 і Файл не найден. і і і 3 і Маршрут не найден. і і і 5 і Попытка динамической компоновки или совместного ис-і і пользования дала нарушение защиты в сети. і і і 6 і Библиотека требует для каждой задачи отдельных сег-і і ментов данных. і і і 8 і Для запуска прикладной программы не хватает памяти.і і і 10 і Некорректная версия Windows. і і і 11 і Недопустимый файл .EXE (не приложение Windows илиі і ошибка в образе .EXE). і і і 12 і Приложение создано для другой операционной системы.і і і 13 і Приложение версии 4.0 DOS. і і і 14 і Неизвестный тип .EXE. і і і 15 і Попытка в защищенном режиме (стандартном или улуч-і і шенном режиме 386) загрузить файл .EXE, созданный ві і более ранней версии Windows. і і і 16 і Попытка загрузить второй экземпляр файла .EXE, со-і і держащий несколько записываемых сегментов данных. і і і 17 і Попытка в режиме EMS с большим кадром загрузитьі і второй экземпляр приложения, которая компонуется сі і уже используемой неразделяемой DLL. і і і 18 і Попытка в реальном режиме загрузить прикладнуюі і программу, помеченную только для защищенного режи-і і ма. і і і 19 і Была попытка загрузки упакованного выполняемогоі і файла. Перед загрузкой файл должен быть распакован.і і і 20 і Недопустимая библиотека динамической компоновкиі і (DLL), или одна из DLL, требуемая для выполненияі і прикладной программы, была недопустимой. і і і 21 і Приложение требует 32-битовых расширений Microsoftі і Windows. і ДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ См. также: FreeLibrary, GetProcAddress. Функция LoadResource модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Загружает ресурс в память. Целевая платформа: Защищенный режим, Windows. Описание: function LoadResource(Instance: THandle; ResInfo: THandle): THandle; Примечания: Загружает ресурс, указанный параметром ResInfo, из выполняемого файла, заданного параметром Instance, и возвраща- ет описатель содержащего ресурс блока глобальной памяти. Если ре- сурс не найден, возвращаемое значение равно 0. Параметр Instance - это описатель экземпляра модуля, получаемый обычно из перемен- ной HInstance модуля System или создаваемый функцией LoadLibrary. Параметр ResInfo должен быть описателем информации о ресурсе, созданным подпрограммой FindResource. Функция LoadResoure загружает ресурс в память только в том случае, если он не был ранее загружен. В противном случае она просто возвращает описатель существующего ресурса. LoadResource увеличивает на 1 значения счетчика ссылок для ресурса. Ресурс ос- тается загруженным, пока счетчик ссылок путем вызовов FreeResource не уменьшается до нуля. Ограничения: Фактическая загрузка ресурса не выполняется, пока для трансляции описателя, возвращаемого функцией LoadResource, в указатель на данные ресурса не вызывается функция LockResource. Функция LoadString модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Загружает в память строку ресурса. Целевая платформа: Защищенный режим, Windows. Описание: function LoadResource(Instance: THandle; ID: Word; Buffer: PChar; BufferMax: Integer): Integer; Примечания: Загружает из выполняемого файла, заданного пара- метром Instance, строку ресурса, заданного параметром ID. Пара- метр Instance - это описатель экземпляра модуля, получаемый обыч- но из переменной HInstance модуля System или создаваемый функцией LoadLibrary. Параметр ID - это целочисленный идентификатор на загружаемую строку. Параметры Buffer и BufferMax задают адрес и размер буфера, в который копируется строка с завершающим нулем. Возвращаемое значение представляет собой число копируемых в буфер символов или 0, если строка ресурсов не существует. Функция LoByte модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает младший байт параметра Word: Целевая платформа: Защищенный режим, Windows. Описание: function LoByte(A: Word): Byte; Примечания: LoByte возвращает младший байт значения, задан- ного A. См. также: HiByte. Функция LockResource модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Блокирует ресурс. Целевая платформа: Защищенный режим, Windows. Описание: function LockByte(ResData: THAndle): Pointer; Примечания: LockByte блокирует ресурс, заданный параметром ResData, и возвращает указатель на первый байт ресурса. Если ре- сурс является выгружаемым, то счетчик его блокировки увеличивает- ся на 1, и ресурс остается в памяти, пока счетчик блокировки не будет уменьшен до 0 с помощью вызовов функции UnlockResource. Возвращаемое значение - это указатель на первый байт ресурса при успешном выполнении LockResource и nil в противном случае. Ограничения: Функции LockResource не следует передавать зна- чение, возвращаемое FindResource. См. также: FreeResource, LoadResource. Функция LockSegment модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Блокирует выгружаемый сегмент. Целевая платформа: Защищенный режим, Windows. Описание: function LockSegment(Segment: Word): THandle; Примечания: Параметр Segment задает селектор блокируемого сегмента. Если сегмент выгружаемый, то счетчик блокировки увели- чивается на 1, и сегмент будет оставаться в памяти, пока счетчик блокировки для него путем вызова функции UnlockSegment не станет равным нулю. Для невыгружаемых сегментов функция LockSegment не действует. В случае успешного выполнения LockSegment возвращает ненулевое значение; если сегмент был выгружен, или произошла ошибка, то возвращаемое значение равно 0. См. также: UnlockSegment. Функция LoWord модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает младшее слово параметра типа Longint. Целевая платформа: Защищенный режим, Windows. Описание: function LoWord(A: Longint): Byte; Примечания: LoWord возвращает младший байт значения, задан- ного A. См. также: HiWord. Функция Low модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает младшее значение в диапазоне аргумен- та. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Low(X); Примечания: Параметр X - это идентификатор типа или ссылка на переменную. Тип, обозначенный X, или тип переменной, обозна- ченный X, должен быть порядковым типом, типом массива или строко- вым типом. Для порядкового типа функция Low возвращает младшее значение в диапазоне типа. Для типа массива Low возвращает млад- шее значение в диапазоне индексного типа массива. Для строкового типа Low возвращает 0. Для открытого массива или строкового пара- метра Low возвращает 1. См. также: High. Пример: { под Windows используйте WinCrt } var A: array[1..100] of Integer; I: Integer; begin for I := Low(A) to High(A) do A(I) := 0; end. type TDay = (Понедельник, Вторник, Среда, Четверг, Пятница, Суббота, Воскресенье); const DayName: array[TDay] of string[3] = ( 'Пон', 'Втр', 'Срд', 'Чет', 'Птн', 'Суб', 'Вос'); var Day: TDAy: Hourse: array[TDay] of 0..24; begin for Day := Low(TDay) to High(TDay) do begin Write('Сколько рабочих часов в ', DayName[Day], '? '); Readln(Hours[Day]); end; end. Процедура LowVideo модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выбирает символы с пониженной яркостью. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure LowVideo; Примечания: В модуле Crt имеется байтовая переменная TextAttr, которая используется для хранения текущих атрибутов изображения. Процедура LowVideo очищает для цвета символов пере- менной TextAttr бит подсветки. Таким образом, цвета 0..7 отобра- жаются в цвета 8..15. См. также: HighVideo, NormVideo, TextColor, TextBackGround. Пример: uses Crt; begin TextAttr := White; LowVideo; { цвет становится светло-серым } end. Функция MakeLong модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает из двух значений типа Word значение типа Longint. Целевая платформа: Защищенный режим, Windows. Описание: function MakeLong(A, B: Word): Longint; Примечания: Параметры A и B задают младшее и старшее слово возвращаемого значения. Функция MaxAvail модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает размер наибольшего свободного блока в динамически распределяемой области памяти. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function MaxAvail: Longint; Примечания: MaxAvail возвращает размер наибольшего непрерыв- ного свободного блока в динамически распределяемой области памя- ти, который можно распределить с помощью процедуры New или GetMem. Для получения общего объема свободной динамически распре- деляемой памяти используйте функцию MemAvail. В реальном режиме DOS MaxAvail сравнивает размер наибольшего свободного блока ниже указателя динамически распределяемой памяти с размером свободной памяти над указателем и возвращает большее из двух значений. Минимальные и максимальные требования к динами- чески распределяемой области ваша программа может задать с по- мощью директивы $M. В защищенном режиме DOS MaxAvail сравнивает размер наиболь- шего свободного блока ниже указателя динамически распределяемой памяти внутри пространства вторичного распределения с размером свободной памяти в глобальной динамически распределяемой области (значение, возвращаемое GlobalCompact) и возвращает большее из двух значений. Прочее: См. также процедуру MemAvail. Пример: type PBuffer = ^TBuffer; TBuffer = array[0..16383] of Chap; var Buffer: PBuffer; begin . . . if MaxAvail < SizeOf(TBuffer) then Writeln('Не хватает памяти'); else begin { выделить память в динамически распределяемой области } New(Buffer); . . . end; . . . end. Функция MemAvail модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает число свободных блоков в динамически распределяемой области памяти. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function MemAvail: Longint; Примечания: Данное число определяется путем сложения разме- ров всех свободных блоков, расположенных ниже указателя динами- чески распределяемой области памяти, с объемом свободной памяти, расположенной выше указателя динамически распределяемой области. Заметим, что пока нет обращений к процедурам Dispose и FrееМем, из-за фрагментации динамически распределяемой области памяти ма- ловероятно, что будет доступен блок памяти, размер которого соот- ветствует возвращаемому значению. Для получения размера наиболь- шего свободного блока используйте функцию МахAvail. В реальном режиме DOS MamAvail вычисляется путем сложения размеров всех свободных блоков ниже указателя динамически распре- деляемой памяти с размером свободной памяти над указателем и возвращает большее из двух значений. Минимальные и максимальные требования к динамически распределяемой области ваша программа может задать с помощью директивы $M. В защищенном режиме DOS MemAvail вычисляет объем свободной динамически распределяемой памяти с помощью вызова функции GetFreeSpace и сложения этого размера с размером каждого свобод- ного блока в области вторичного распределения администратора ди- намически распределяемой области памяти. См. также: МахAvail. Пример: { под Windows используйте WinCrt } begin Writeln('Доступно ', MemAvail, 'байт'); Writeln('Наибольший свободный блок равен ', MaxAvail, ' байт.'); end. Функция MessageBox модуль WinAPI ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выводит на экран и обслуживает окно сообщений. Целевая платформа: Защищенный режим, Windows. Описание: function MessageBox(WndParent: THandle; Txt, Caption: PChar; TextType: Word): Integer; Примечания: Данная функция выводит и обслуживает диалоговое окно, содержащее заданный заголовок и сообщение, а также комбина- цию предопределенных пиктограмм, описанных константами mb_XXXX. Параметр WndHandle - это описатель окна, которому принадле- жит окно сообщений или 0, если окно сообщений не имеет владельца. Параметр Text представляет собой указатель на строку с завершаю- щим нулем, содержащую выводимое сообщение. Параметр Caption - это указатель на строку с завершающим нулем, которая содержит заголо- вок диалогового окна. Если Caption имеет значение nil, то исполь- зуется 'Error'. Параметр TextType специфицирует пиктограмму, ко- мандные кнопки и атрибуты окна сообщения - это комбинация конс- тант mb_XXXX. Если для создания диалогового окна не хватает памяти, то MessageBox возвращает 0. В противном случае возвращается значение константы id_XXXX, соответствующее активизированной для заверше- ния диалога командной кнопке. См. определение констант id_XXXX. Когда создается модальное окно для указания, что система на- ходится в нижних адресах памяти, строки, на которые указывают Text и Caption, не должны извлекаться из файла ресурса, поскольку загрузка ресурса может завершиться неудачно. Если прикладная программа вызывает MessageBox и задает mb_IconHand и mb_SystemModal, то, независимо от доступной памяти, Windows выво- дит результирующее окно сообщения. Когда задаются эти флаги, Windows ограничивает длину текста окна сообщения тремя строками. Однако, так как Windows не разбивает автоматически строки, чтобы они помещались в окно сообщений, строка сообщений должна содер- жать в нужных местах возвраты каретки. Если окно сообщений создается при наличии диалогового окна, используйте в качестве описателя диалогового окна HWnd. HWnd не следует использовать для идентификации дочернего окна. В защищенном режиме DOS функция MessageBox не создает диало- гового окна. Вместо этого она выводит на экране заголовок и сооб- щение, за которыми следует список элементов выбора, соответствую- щих требуемому набору командных кнопок, например: MessageBox(0, 'Сохранить текущие изменения?', 'TextEdit', mbYesNoCancel); будет выводить: TextEdit: Сохранить текущие изменения? Yes (Y), No (N), Cancel (C): и ждет от пользователя нажатия клавиши Y, N или C. В защищенном режиме DOS параметр WndParent игнорируется, как и все константы mb_XXXX, не определяющие командные кнопки. См. также: Константы Id_XXXX, mb_XXXX. Процедура MkDir модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает подкаталог. Целевая платформа: Защищенный режим, Windows. Описание: procedure MkDir(s: String); Примечания: Параметр s представляет собой выражение строко- вого типа. Создается новый каталог с маршрутом доступа, заданным строкой s. Последний элемент этой записи не может задавать имя существующего файла. При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция заверши- лась успешно, и ненулевой код ошибки в противном случае. Те же функции выполняет процедура CreateDir, но она воспринимает не строку Паскаля, а строку с завершающим нулем. См. также: RmDir, ChDir, GetDir. Пример: begin {$I-} { получить из командной строки имя каталога } MkDir(ParamStr(1)); If IOResult <> 0 then Writeln('создание каталога невозможно'); else Writeln('создан новый каталог'); end. Процедура Move модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Копирует заданное число непрерывных байт из заданного диапазона в указанный целевой диапазон. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure Моvе(var Src, Dst; Count: Word); Примечания: Параметры Src и Dst представляют собой ссылки на переменные любого типа. Параметр Count - это выражение типа Word. Процедура Моvе копирует байтовый блок из Src, размер которого (в байтах) задается параметром Count, в блок, начинающийся первого байта, заданного параметром Dst. С данной процедурой следует ра- ботать аккуратно, поскольку никаких проверок не выполняется. Когда области, задаваемые параметрами Src и Dst, находятся в одном сегменте, то есть когда адреса сегментов у них совпадают, то процедура Моvе автоматически обнаруживает и компенсирует ка- кие-либо перекрытия. Для статически и динамически распределяемых переменных внутрисегментных перекрытий никогда не происходит (ес- ли только это не делается специально) и, таким образом, они не могут обнаруживаться. Там, где это возможно, для определения параметра Count сле- дует использовать функцию SizeOf. См. также: FillChar. Пример: var a : array[1..4] of char; b : longint; begin Move(a, b, SizeOf(a)); { для надежности исполь- зуется функция SizeOf } end. Процедура MoveRel модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Перемещает текущий указатель на расстояние, за- данное относительными координатами от его текущей позиции. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure MoveRel(Dx, Dy: Integer); Примечания: Процедура МоvеRеl перемещает текущий указатель в точку, заданную относительным расстоянием (Dх,Dy) от точки, в ко- торой находится текущий указатель. Относительные команды перемещения и рисования полезны при вычерчивании различных объектов на экране, у которых начальная точка может быть изменена (чтобы, например, вычертить ту же самую фигуру в другом месте экрана). Ограничения: Должен использоваться графический режим. См. также: GetMaxX, GetMaxY, GetX, GetY, LineRel, LineTo, MoveTo. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> 0 then Halt(1); MoveTo(1,2); MoveRel(10,10) { переместить в точку с координатами (11,12) } PutPixel(GeyX, GetY, GetMaxColor); Readln; CloseGraph; end. Процедура MoveTo модуль Graph ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Перемещает текущий графический указатель в точку (x,y). Целевая платформа: Защищенный режим, реальный режим. Описание: procedure MoveTo(x, y: Integer); Примечания: Текущий указатель перемещается в точку с коорди- натами (x,y). Текущий указатель аналогичен курсору, который ис- пользуется в текстовом режиме. Различает их то, что текущий ука- затель невидим. Текущий указатель перемещают процедуры: ClearDevice InitGraph MoveRel SetGraphMode ClearViewPort LineRel MoveTo SetViewPort GraphDefaults LineTo OutText Если активна текущая область просмотра, то текущий указатель зависит от данной области (значения x и y будут суммироваться со значениями x1, y1 текущей области просмотра). В границах текущей области просмотра текущий указатель никогда не отсекается. См. также: GetMaxX, GetMaxY, GetX, GetY, MoveRel. Пример: uses Graph; var Gd, Gm : integer; begin Gd := Detect; InitGraph(gd, Gm, ''); if GraphResult <> 0 then Halt(1); MoveTo(0,0); { левый верхний угол окна } LineTo(GetMaxX, GetMaxY); Readln; CloseGraph; end. Функция MsDos модуль Dos ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выполняет функциональный вызов DOS. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure MsDos(var Regs: Registers); { DOS } procedure MsDos(var Regs: TRegisters); { Windows } Примечания: Результат обращения к функции MsDos будет тот же самый, что и при обращении к функции Intr с номером прерывания IntNo $21. Registers представляет собой запись, описанную в моду- ле Dos. Если вы пишете программу для Windows, используйте тип TRegisters. Ограничения: Программные прерывания, для которых на входе требуется задание определенных значений в SР или SS или изменяют значения SР и SS на выходе, с использованием данной функции вы- полняться не могут. См. также: Dos3Call, Registers, TRegisters, Intr. Процедура New модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Создает новую динамическую переменную и устанав- ливает на нее указатель. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: procedure New(var p: Pointer); Примечания: Параметр p является переменной-указателем и от- носится к указателям любого типа. Размер выделяемого блока памяти соответствует размеру того типа, на который указывает p. На вновь созданную переменную можно ссылаться с помощью p^. Если для выде- ления памяти под новую динамическую переменную в динамически распределяемой области недостаточно свободной памяти, то во время выполнения программы происходит ошибка. (Этой ошибки можно избе- жать - см. раздел "Функция HeapError" в Главе 21 "Руководства по языку".) См. также: Dispose, FreeMem, HeapError, GetMem. Процедура NormVideo модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выбирает обычный атрибут текста для позиции кур- сора во время загрузки и запуска программы. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure NormVideo; Примечания: В блоке Crt имеется байтовая переменная (ТехtAttr), которая используется для сохранения текущего видеоат- рибута. Данная процедура восстанавливает для TехtAttr то значе- ние, которое эта переменная имела до запуска программы. См. также: HighVideo, LowVideo, TextColor, TextBackGround. Процедура NoSound модуль Crt ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Выключает внутренний динамик. Целевая платформа: Защищенный режим, реальный режим. Описание: procedure NoSound; Примечания: Следующий фрагмент программы вызывает звучание сигнала частотой 440 герц в течении половины секунды. Sound(440); Delay(500); NoSound; См. также: Sound. Функция Odd модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Проверяет, является ли аргумент нечетным числом. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Odd(x: Longint): Boolean; Примечания: Параметр x - это выражение длинного целого типа. Результат принимает значение Truе, если x представляет собой не- четное число и False - в противном случае. Функция Ofs модуль System ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Назначение: Возвращает для заданного объекта смещение. Целевая платформа: Защищенный режим, реальный режим, Windows. Описание: function Ofs(x): Longint; Примечания: Параметр x представляет собой любую переменную или идентификатор процедуры или функции. Результат длиной в слово представляет собой смещение для x. См. также: Seg, Addr. |