Лучшие автора конкурса
1. saleon@bk.ru (277)
4. patr1cia@i.ua (45)
Вселенная:
Результат
Архив

Главная / Учебники / Учебники на русском языке / Компьютерные науки / Borland Pascal 7.0 & Objects - Справочное руководство программиста


Компьютерные науки - Учебники на русском языке - Скачать бесплатно


Автор неизвестен
Borland Pascal 7.0 & Objects - Справочное руководство программиста

Справочное руководство программиста
=========================================================================

B.Pascal 7 & Objects/PG - 1 -

Введение.......................................................21
Об этом руководстве............................................21
Глава 1. Справочник по библиотеке..............................23
Процедура Sample Содержащие ее
модули........................................................23
Константы, типы и переменные...................................24
Тип ArcCoordsType модуль
Graph.........................................................24
Переменная AutoTracking модуль
WinCrt........................................................24
Константы Bar модуль
Graph.........................................................25
Операции BitBlt модуль
Graph.........................................................25
Тип Bool модуль
WinAPI........................................................26
Переменная CheckBreak
модуль Crt....................................................26
Переменная CheckBreak модуль
WinCrt........................................................27
Переменная CheckEof
модуль Crt....................................................27
Переменная CheckEof модуль
WinCrt........................................................28
Переменная CheckSnow
модуль Crt....................................................28
Константы отсечения модуль
Graph.........................................................29
Переменная CmdLine модуль
System........................................................29
Переменная CmdShow модуль
System........................................................30
Константы цветов модуль
Graph.........................................................30
Константы цветов для SetRGBPalette модуль
Graph.........................................................31
Константы режима Crt
модуль Crt....................................................32
Переменная Cursor модуль
WinCrt........................................................33
Тип DateTime
модуль Dos....................................................33
Переменная DirectVideo
модуль Crt....................................................34
Переменная DosError модуль Dos,
WinDos........................................................35
Драйверы и константы режима модуль
Graph.........................................................36
Переменная ErrorAddr модуль
System........................................................39
Константы флагов fcXXXX модуль
WinDos........................................................39
Константы атрибутов файла модули Dos,

B.Pascal 7 & Objects/PG - 2 -

WinDos........................................................40
Константы длины имени файла модуль
WinDos........................................................41
Типы работы со строками
модуль Dos....................................................41
Переменная FileMode модуль
System........................................................42
Тип FileRec
модуль Dos....................................................43
Константы образцов закраски модуль
Graph.........................................................44
Тип FillPatternType
модуль Dos....................................................45
Тип FillSettingType модуль
Graph.........................................................45
Константы флагов модуль Dos,
WinDos........................................................46
Константы fmXXXX модуль Dos,
WinDos........................................................47
Константы шрифтов модуль
Graph.........................................................47
Переменная FreeList модуль
System........................................................48
Константы флага памяти gmem_XXXX модуль
WinAPI........................................................49
Переменная GraphFreeMemPtr модуль
Graph.........................................................50
Переменная GraphGetMemPtr модуль
Graph.........................................................51
Константы grXXXX модуль
Graph.........................................................52
Переменная HeapAllocFlags модуль
System........................................................53
Переменная HeapBlock модуль
System........................................................53
Переменная HeapEnd модуль
System........................................................54
Переменная HeapError модуль
System........................................................55
Переменная HeapLimit модуль
System........................................................56
Переменная HeapList модуль
System........................................................56
Переменная HeapOrg модуль
System........................................................57
Переменная HeapPtr модуль
System........................................................57
Переменная HInstance модуль
System........................................................58
Переменная HPrevInst модуль
System........................................................58
Константы Id_XXXX модуль
WinAPI........................................................59

B.Pascal 7 & Objects/PG - 3 -

Переменная InactiveTitle модуль
WinCrt........................................................59
Переменная InOutRes модуль
System........................................................60
Переменная Input модуль
System........................................................60
Константы выравнивания модуль
Graph.........................................................61
Переменная LastMode
модуль Crt....................................................61
Константы стиля линии модуль
Graph.........................................................62
Тип LineSettingsType модуль
Graph.........................................................63
Переменная Lst модуль
Printer.......................................................64
Константы MaxColors модуль
Craph.........................................................64
Константы mb_XXXX модуль
WinAPI........................................................65
Переменная Origin модуль
WinCrt........................................................67
Переменная Output модуль
System........................................................68
Переменная OvrCodeList модуль
Overlay.......................................................69
Переменная OvrDebugPtr модуль
Overlay.......................................................69
Переменная OvrDosHandle модуль
System........................................................70
Переменная OvrEmsHandle модуль
System........................................................70
Переменная OvrFileMode модуль
Overlay.......................................................71
Переменная OvrHeapEnd модуль
System........................................................71
Переменная OvrHeapOrg модуль
System........................................................72
Переменная OvrHeapPtr модуль
System........................................................73
Переменная OvrHeapSize модуль
System........................................................73
Переменная OvrLoadCount модуль
Overlay.......................................................74
Переменная OvrLoadList модуль
System........................................................74
Переменная OvrReadBuf модуль
Overlay.......................................................75
Переменная OvrResult модуль
Overlay.......................................................75
Переменная OvrTrapCount модуль
Overlay.......................................................76
Константы ovrXXXX модуль

B.Pascal 7 & Objects/PG - 4 -

Overlay.......................................................76
Тип PaletteType модуль
Graph.........................................................77
Тип PointType модуль
Graph.........................................................77
Переменная PrefixSeg модуль
System........................................................78
Переменная RandSeed модуль
System........................................................78
Переменная ReadModeRegs модуль
System........................................................79
Тип Registers
модуль Dos....................................................79
Переменные SaveIntXX модуль
System........................................................80
Типизированные константы ScreenSize модуль
WinCrt........................................................82
Тип SearchRec
модуль Dos....................................................83
Переменная Seg0040 модуль
System........................................................83
Переменная SegA000 модуль
System........................................................84
Переменная SegB000 модуль
System........................................................84
Переменная SegB800 модуль
System........................................................85
Переменная SelectorInc модуль
System........................................................85
Переменная StackLimit модуль
System........................................................86
Тип TDateTime модуль
WinDos........................................................86
Переменная Test8086 модуль
System........................................................87
Переменная Test8087 модуль
System........................................................88
Переменная TextAttr
модуль Crt....................................................89
Константы цветов текста
модуль Crt....................................................90
Тип TextRec
модуль Dos....................................................91
Тип TextSettingsType модуль
Graph.........................................................92
Тип TFarProc модуль
WinAPI........................................................92
Тип TFileRec модуль
WinDos........................................................93
Тип THandle модуль
WinAPI........................................................93
Тип TRegisters модуль
WinDos........................................................94

B.Pascal 7 & Objects/PG - 5 -

Тип TSearchRec модуль
WinDos........................................................94
Тип TTextRec модуль
WinDos........................................................95
Тип ViewPortType модуль
Graph.........................................................96
Флаги конфигурации wf_XXXX модуль
VinAPI........................................................97
Переменные WindMax и WindMin
модуль Crt....................................................97
Переменная WindowOrg модуль
WinCrt........................................................98
Переменная WindowSize модуль
WinCrt........................................................98
Переменная WindowTitle модуль
WinCrt........................................................99
Процедуры и функции...........................................100
Процедура AbortPrn модуль
WinPrn.......................................................100
Функция Abs модуль
System.......................................................101
Функция AccessResource модуль
WinApi.......................................................102
Функция Addr модуль
System.......................................................103
Функция AllocDStoCSAlias модуль
WinApi.......................................................104
Функция AllocSelector модуль
WinApi.......................................................105
Процедура Append модуль
System.......................................................106
Процедура Arc модуль
Graph........................................................107
Функция ArcTan модуль
System.......................................................108
Процедура Assign модуль
System.......................................................108
Функция AssignCrt
модуль Crt...................................................110
Функция AssignCrt модуль
WinCrt.......................................................111
Функция AssignDefPrn модуль
WinPrn.......................................................111
Функция Assigned модуль
System.......................................................112
Процедура AssignPrn модуль
WinPrn.......................................................113
Процедура Bar модуль
Graph........................................................114
Процедура Bar3D модуль
Graph........................................................115
Процедура BlockRead модуль
System.......................................................117

B.Pascal 7 & Objects/PG - 6 -

Процедура BlockWrite модуль
System.......................................................119
Процедура Break модуль
System.......................................................121
Функция ChangeSelector модуль
WinAPI.......................................................122
Процедура ChDir модуль
System.......................................................123
Функция Chr модуль
System.......................................................124
Процедура Circle модуль
Graph........................................................125
Процедура ClearDevice модуль
Graph........................................................126
Процедура ClearViewPort модуль
Graph........................................................127
Процедура Close модуль
System.......................................................128
Процедура CloseGraph модуль
Graph........................................................129
Процедура CrlEol
модуль Crt...................................................130
Процедура CrlEol модуль
WinCrt.......................................................130
Процедура ClrScr
модуль Crt...................................................131
Процедура ClrScr модуль
WinCrt.......................................................132
Функция Concat модуль
System.......................................................133
Процедура Continue модуль
System.......................................................134
Функция Copy модуль
System.......................................................135
Функция Cos модуль
System.......................................................136
Процедура CreateDir модуль
WinDos.......................................................136
Функция CSeg модуль
System.......................................................137
Процедура CursorTo модуль
WinCrt.......................................................137
Процедура Dec модуль
System.......................................................138
Процедура Delay
модуль Crt...................................................139
Процедура Delete модуль
System.......................................................139
Процедура DelLine
модуль Crt...................................................140
Процедура DetectGraph модуль
Graph........................................................141
Функция DiskFree

B.Pascal 7 & Objects/PG - 7 -

модуль Dos...................................................142
Функция DiskSize
модуль Dos...................................................143
Процедура Dispose модуль
System.......................................................144
Процедура DoneWithCrt модуль
WinCrt.......................................................145
Функция DosExitCode
модуль Dos...................................................145
Процедура DOS3Call модуль
WinAPI.......................................................146
Процедура DosVersion модуль Dos,
WinDos.......................................................147
Процедура DrawPoly модуль
Graph........................................................148
Функция Dseg модуль
System.......................................................149
Процедура Ellipse модуль
Graph........................................................150
Функция EnvCount
модуль Dos...................................................151
Функция EnvStr
модуль Dos...................................................151
Функция Eof (текстовые файлы) модуль
System.......................................................152
Функция Eof (типизированные и нетипизированные файлы) мод.
System.......................................................153
Функция Eoln модуль
System.......................................................154
Процедура Erase модуль
System.......................................................155
Процедура Exclude модуль
System.......................................................156
Процедура Exec
модуль Dos...................................................156
Процедура Exit модуль
System.......................................................158
Переменная ExitCode модуль
System.......................................................158
Переменная ExitProc модуль
System.......................................................159
Функция Exp модуль
System.......................................................159
Процедура FatalExit модуль
WinAPI.......................................................160
Функция FExpand
модуль Dos...................................................160
Функция FileExpand модуль
WinDos.......................................................161
Функция FilePos модуль
System.......................................................162
Функция FileSearch модуль
WinDos.......................................................163

B.Pascal 7 & Objects/PG - 8 -

Функция FileSize модуль
System.......................................................164
Функция FileSplit модуль
WinDos.......................................................165
Процедура FillChar модуль
System.......................................................166
Функция FillEllipse
модуль Dos...................................................167
Процедура FillPoly модуль
Graph........................................................168
Процедура FindFirst модуль Dos,
WinDos.......................................................169
Процедура FindNext модуль Dos,
WinDos.......................................................170
Функция FindResource модуль
WinAPI.......................................................171
Процедура FloodFill модуль
Graph........................................................172
Процедура Flush модуль
System.......................................................174
Функция Frac модуль
System.......................................................175
Процедура FreeLibrary модуль
WinAPI.......................................................175
Процедура FreeMem модуль
System.......................................................176
Функция FreeResource модуль
WinAPI.......................................................177
Функция FreeSelector модуль
WinAPI.......................................................178
Функция FSearch
модуль Dos...................................................178
Процедура FSplit
модуль Dos...................................................179
Процедура GetArcCoords модуль
Graph........................................................180
Функция GetArgCount модуль
WinDos.......................................................181
Функция GetArgStr модуль
WinDos.......................................................181
Процедура GetAspectRatio модуль
Graph........................................................182
Функция GetBkColor модуль
Graph........................................................183
Процедура GetCBreak
модуль Dos...................................................184
Функция GetColor модуль
Graph........................................................185
Функция GetCurDir модуль
WinDos.......................................................186
Процедура GetDate модуль Dos,
WinDos.......................................................186
Функция GetDefaultPalette модуль

B.Pascal 7 & Objects/PG - 9 -

Graph........................................................187
Процедура GetDir модуль
System.......................................................188
Функция GetDOSEnviroment модуль
WinAPI.......................................................189
Функция GetDriverName модуль
Graph........................................................190
Функция GetEnv
модуль Dos...................................................191
Функция GetEnvVar модуль
WinDos.......................................................192
Процедура GetFAttr
модуль Dos...................................................193
Процедура GetFillPattern модуль
Graph........................................................194
Процедура GetFillSettings модуль
Graph........................................................195
Функция GetFreeSpace модуль
WinAPI.......................................................196
Процедура GetFTime модуль Dos,
WinDos.......................................................197
Функция GetGraphMode модуль
Graph........................................................197
Процедура GetImage модуль
Graph........................................................200
Процедура GetIntVec
модуль Dos...................................................201
Процедура GetLineSettings модуль
Graph........................................................201
Процедура GetMaxColor модуль
Graph........................................................203
Функция GetMaxMode модуль
Graph........................................................204
Функция GetMахХ модуль
Graph........................................................205
Функция GetМахY модуль
Graph........................................................206
Процедура GetMem модуль
System.......................................................207
Функция GetModeName модуль
Graph........................................................208
Процедура GetModeRange модуль
Graph........................................................209
Функция GetModuleFileName модуль
WinAPI.......................................................210
Функция GetModuleHandle модуль
WinAPI.......................................................210
Функция GetModuleUsage модуль
WinAPI.......................................................211
Процедура GetPalette модуль
Graph........................................................212
Функция GetPaletteSize модуль
Graph........................................................213

B.Pascal 7 & Objects/PG - 10 -

Процедура GetPixel модуль
Graph........................................................214
Функция GetProcAddress модуль
WinAPI.......................................................215
Функция GetSelectorBase модуль
WinAPI.......................................................216
Функция GetSelectorLimit модуль
WinAPI.......................................................216
Процедура GetTextSettings модуль
Graph........................................................217
Процедура GetTime
модуль Dos...................................................218
Процедура GetVerify модуль Dos,
WinDos.......................................................218
Функция GetVersion модуль
WinAPI.......................................................219
Процедура GetViewSettings модуль
Graph........................................................220
Функция GetWinFlags модуль
WinAPI.......................................................221
Функция GetX модуль
Graph........................................................222
Функция GetY модуль
Graph........................................................223
Функция GlobalAlloc модуль
WinAPI.......................................................224
Функция GlobalAllocPrt модуль
WinAPI.......................................................226
Функция GlobalCompact модуль
WinAPI.......................................................227
Функция GlobalDiscard модуль
WinAPI.......................................................227
Функция GlobalDosAlloc модуль
WinAPI.......................................................228
Функция GlobalDosFree модуль
WinAPI.......................................................229
Процедура GlobalFix модуль
WinAPI.......................................................229
Функция GlobalFlags модуль
WinAPI.......................................................230
Функция GlobalFree модуль
WinAPI.......................................................231
Функция GlobalFreePtr модуль
WinAPI.......................................................231
Функция GlobalHandle модуль
WinAPI.......................................................232
Функция GlobalLock модуль
WinAPI.......................................................232
Функция GlobalLRUNewest модуль
WinAPI.......................................................233
Функция GlobalLRUOldest модуль
WinAPI.......................................................233
Функция GlobalNotify модуль

B.Pascal 7 & Objects/PG - 11 -

WinAPI.......................................................234
Функция GlobalPageLock модуль
WinAPI.......................................................235
Функция GlobalPageUnLock модуль
WinAPI.......................................................235
Функция GlobalPtrHandle модуль
WinAPI.......................................................236
Функция GlobalReAlloc модуль
WinAPI.......................................................237
Функция GlobalReAllocPtr модуль
WinAPI.......................................................238
Функция GlobalSize модуль
WinAPI.......................................................239
Функция GlobalUnfix модуль
WinAPI.......................................................239
Функция GlobalUnlock модуль
WinAPI.......................................................240
Процедура GotoXY
модуль Crt...................................................240
Процедура GotoXY модуль
WinCrt.......................................................241
Процедура GraphDefaults модуль
Graph........................................................241
Функция GraphErrorMsg модуль
Graph........................................................242
Функция GraphResult модуль
Graph........................................................243
Процедура Halt модуль
System.......................................................245
Функция Hi модуль
System.......................................................245
Функция HiByte модуль
WinAPI.......................................................246
Функция High модуль
System.......................................................246
Процедура HighVideo
модуль Crt...................................................247
Функция HiWord модуль
WinAPI.......................................................247
Процедура ImageSize модуль
Graph........................................................248
Процедура Inc модуль
System.......................................................249
Процедура Include модуль
System.......................................................250
Процедура InitGraph модуль
Graph........................................................250
Процедура InitWinCrt модуль
WinCrt.......................................................253
Процедура Insert модуль
System.......................................................253
Процедура InsLine
модуль Crt...................................................254

B.Pascal 7 & Objects/PG - 12 -

Функция InstallUserDriver модуль
Graph........................................................255
Функция InstallUserFont модуль
Graph........................................................258
Функция Int модуль
System.......................................................259
Процедура Intr модуль Dos,
WinDos.......................................................260
Функция IOResult модуль
System.......................................................261
Процедура Keep
модуль Dos...................................................262
Функция KeyPressed
модуль Crt...................................................262
Функция KeyPressed модуль
WinCrt.......................................................263
Функция Length модуль
System.......................................................264
Процедура Line модуль
Graph........................................................265
Процедура LineRel модуль
Graph........................................................267
Процедура LineTo модуль
Graph........................................................268
Функция Ln модуль
System.......................................................269
Функция Lo модуль
System.......................................................269
Функция LoadLibrary модуль
WinAPI.......................................................270
Функция LoadResource модуль
WinAPI.......................................................273
Функция LoadString модуль
WinAPI.......................................................274
Функция LoByte модуль
WinAPI.......................................................274
Функция LockResource модуль
WinAPI.......................................................275
Функция LockSegment модуль
WinAPI.......................................................275
Функция LoWord модуль
WinAPI.......................................................276
Функция Low модуль
System.......................................................277
Процедура LowVideo
модуль Crt...................................................278
Функция MakeLong модуль
WinAPI.......................................................278
Функция MaxAvail модуль
System.......................................................279
Функция MemAvail модуль
System.......................................................280
Функция MessageBox модуль

B.Pascal 7 & Objects/PG - 13 -

WinAPI.......................................................281
Процедура MkDir модуль
System.......................................................283
Процедура Move модуль
System.......................................................284
Процедура MoveRel модуль
Graph........................................................285
Процедура MoveTo модуль
Graph........................................................286
Функция MsDos
модуль Dos...................................................287
Процедура New модуль
System.......................................................287
Процедура NormVideo
модуль Crt...................................................288
Процедура NoSound
модуль Crt...................................................288
Функция Odd модуль
System.......................................................289
Функция Ofs модуль
System.......................................................289
Функция Ord модуль
System.......................................................290
Процедура OutText модуль
Graph........................................................290
Процедура OutTextXY модуль
Graph........................................................293
Процедура OvrClearBuf модуль
Overlay......................................................294
Процедура OvrGetBuf модуль
Overlay......................................................294
Функция OvrGetRetry модуль
Overlay......................................................295
Процедура OvrInit модуль
Overlay......................................................296
Процедура OvrInitEMS модуль
Overlay......................................................296
Процедура OvrSetBuf модуль
Overlay......................................................299
Процедура OvrSetRetry модуль
Overlay......................................................300
Процедура PackTime
модуль Dos...................................................301
Функция ParamCount модуль
System.......................................................301
Функция ParamStr модуль
System.......................................................302
Функция Pi модуль
System.......................................................302
Процедура PieSlice модуль
Graph........................................................303
Функция Pos модуль
System.......................................................304

B.Pascal 7 & Objects/PG - 14 -

Функция Pred модуль
System.......................................................305
Функция Ptr модуль
System.......................................................305
Процедура PutImage модуль
Graph........................................................306
Процедура PutPixel модуль
Graph........................................................309
Функция Random модуль
System.......................................................310
Процедура Randomize модуль
System.......................................................310
Процедура Read (текстовые файлы) модуль
System.......................................................311
Процедура Read (типизированные файлы) модуль
System.......................................................313
Функция ReadBuf модуль
WinCrt.......................................................314
Функция ReadKey
модуль Crt...................................................314
Функция ReadKey модуль
WinCrt.......................................................316
Процедура ReadLn модуль
System.......................................................316
Процедура Rectangle модуль
Graph........................................................317
Функция RegisterBGIdriver модуль
Graph........................................................318
Функция RegisterBGIfont модуль
Graph........................................................320
Процедура RemoveDir модуль
WinDos.......................................................323
Процедура Rename модуль
System.......................................................323
Процедура Reset модуль
System.......................................................324
Процедура RestoreCrtMode модуль
Graph........................................................325
Процедура Rewrite модуль
System.......................................................327
Процедура RmDir модуль
System.......................................................329
Функция Round модуль
System.......................................................330
Процедура RunError модуль
System.......................................................330
Процедура ScrollTo модуль
WinCrt.......................................................331
Процедура Sector модуль
Graph........................................................331
Процедура Seek модуль
System.......................................................333
Функция SeekEof модуль

B.Pascal 7 & Objects/PG - 15 -

System.......................................................333
Функция SeekEoln модуль
System.......................................................334
Функция Seg модуль
System.......................................................334
Процедура SetActivePage модуль
Graph........................................................335
Процедура SetAllPalette модуль
Graph........................................................336
Процедура SetAspectRatio модуль
Graph........................................................338
Процедура SetBkColor модуль
Graph........................................................340
Процедура SetCBreak
модуль Dos...................................................341
Процедура SetColor модуль
Graph........................................................342
Процедура SetCurDir модуль
WinDos.......................................................343
Процедура SetDate
модуль Dos...................................................343
Процедура SetFAttr
модуль Dos...................................................344
Процедура SetFillPattern модуль
Graph........................................................345
Процедура SetFillStyle модуль
Graph........................................................347
Процедура SetFTime модуль Dos,
WinDos.......................................................348
Процедура SetGraphMode модуль
Graph........................................................348
Процедура SetGraphMode модуль
Graph........................................................349
Процедура SetIntVec модуль Dos,
WinDos.......................................................350
Процедура SetLineStyle модуль
Graph........................................................351
Процедура SetPalette модуль
Graph........................................................353
Функция SetPrnFont модуль
WinPrn.......................................................355
Процедура SetRGBPalette модуль
Graph........................................................356
Функция SetSelectorBase модуль
WinAPI.......................................................358
Функция SetSelectorLimit модуль
WinAPI.......................................................358
Процедура SetTextBuf модуль
System.......................................................359
Процедура SetTextJustify модуль
Graph........................................................361
Процедура SetTextStyle модуль
Graph........................................................362

B.Pascal 7 & Objects/PG - 16 -

Процедура SetTime
модуль Dos...................................................364
Процедура SetUserCharSize модуль
Graph........................................................364
Процедура SetVerify
модуль Dos...................................................366
Процедура SetViewPort модуль
Graph........................................................366
Процедура SetVisualPage модуль
Graph........................................................369
Процедура SetWriteMode модуль
Graph........................................................370
Функция Sin модуль
System.......................................................372
Функция SizeOf модуль
System.......................................................373
Процедура SizeofResource модуль
WinAPI.......................................................374
Процедура Sound
модуль Crt...................................................374
Функция SPtr модуль
System.......................................................375
Функция Sqr модуль
System.......................................................375
Функция Sqrt модуль
System.......................................................376
Функция SSeg модуль
System.......................................................376
Процедура Str модуль
System.......................................................377
Функция StrCat модуль
Strings......................................................378
Функция StrComp модуль
Strings......................................................379
Функция StrCopy модуль
Strings......................................................380
Функция StrDispose модуль
Strings......................................................380
Функция StrECopy модуль
Strings......................................................381
Функция StrEnd модуль
Strings......................................................382
Функция StrIComp модуль
Strings......................................................382
Функция StrLCat модуль
Strings......................................................383
Функция StrLComp модуль
Strings......................................................384
Функция StrLCopy модуль
Strings......................................................385
Функция StrLen модуль
Strings......................................................385
Функция StrLIComp модуль

B.Pascal 7 & Objects/PG - 17 -

Strings......................................................386
Функция StrLower модуль
Strings......................................................386
Функция StrMove модуль
Strings......................................................387
Функция StrNew модуль
Strings......................................................388
Функция StrPas модуль
Strings......................................................389
Функция StrPCopy модуль
Strings......................................................390
Функция StrPos модуль
Strings......................................................391
Функция StrRScan модуль
Strings......................................................392
Функция StrScan модуль
Strings......................................................393
Функция StrUpper модуль
Strings......................................................394
Функция Succ модуль
System.......................................................395
Функция Swap модуль
System.......................................................395
Процедура SwapVectors
модуль Dos...................................................396
Процедура TextBackGround
модуль Crt...................................................397
Процедура TextColor
модуль Crt...................................................398
Функция TextHeight модуль
Graph........................................................399
Процедура TextMode
модуль Crt...................................................400
Функция TextWidth модуль
Graph........................................................402
Процедура TitlePrn модуль
WinPrn.......................................................404
Процедура TrackCursor модуль
WinCrt.......................................................404
Функция Trunc модуль
System.......................................................405
Процедура Truncate модуль
System.......................................................405
Функция TypeOf модуль
System.......................................................406
Функция UnlockResource модуль
WinAPI.......................................................406
Функция UnlockSegment модуль
WinAPI.......................................................407
Процедура UnpackTime модуль Dos,
WinDos.......................................................407
Функция UpCase модуль
System.......................................................408

B.Pascal 7 & Objects/PG - 18 -

Процедура Val модуль
System.......................................................408
Функция WhereX
модуль Crt...................................................410
Функция WhereX модуль
WinCrt.......................................................410
Функция WhereY
модуль Crt...................................................410
Функция WhereY модуль
WinCrt.......................................................411
Процедура Window
модуль Crt...................................................411
Процедура Write (текстовые файлы) модуль
System.......................................................412
Процедура Write (типизированные файлы) модуль
System.......................................................415
Функция WriteBuf модуль
WinCrt.......................................................416
Функция WriteChar модуль
WinCrt.......................................................416
Процедура Writeln.............................................417
Глава 2. Директивы компилятора................................418
Выравнивание данных
переключатель................................................420
Булевские вычисления
переключатель................................................421
Атрибут сегмента кода
параметр.....................................................422
Информация для отладки
переключатель................................................423
Директива DEFINE условная
компиляция...................................................425
Описание
параметр.....................................................425
Директива ELSE условная
компиляция...................................................426
Эмуляция
переключатель................................................426
Директива ENDIF условная
компиляция...................................................427
Принудительный дальний тип вызова
переключатель................................................427
Генерация кода для процессора 80286
переключатель................................................428
Сегменты групп модулей
параметр.....................................................429
Директива IFDEF условная
компиляция...................................................429
Директива IFNDEF условная
компиляция...................................................430
Директива IFOPT условная
компиляция...................................................430
Включение файла

B.Pascal 7 & Objects/PG - 19 -

параметр.....................................................431
Проверка ошибок ввода-вывода
переключатель................................................431
Эффективные вызовы
переключатель................................................432
Компоновка объектного файла
параметр.....................................................432
Информация о локальных идентификаторах
переключатель................................................433
Размеры выделяемой памяти
параметр.....................................................434
Сопроцессор математических вычислений
переключатель................................................435
Генерация оверлейного кода
переключатель................................................435
Имя оверлейного модуля
параметр.....................................................436
Открытые строковые параметры
переключатель................................................436
Проверка переполнения
переключатель................................................437
Проверка границ
переключатель................................................438
Файл ресурсов
параметр.....................................................439
Допустимый размер сегмента
параметр.....................................................440
Проверка переполнения стека
параметр.....................................................441
Указатели с проверкой типов
переключатель................................................441
Директива UNDEF условная
компиляция...................................................442
Проверка параметров-переменных строкового типа
переключатель................................................442
Кадры стека Windows
переключатель................................................443
Расширенный синтаксис
переключатель................................................443
Информация о ссылках на идентификаторы
переключатель................................................444
Использование директив условной компиляции....................444
Условные идентификаторы.......................................445
Глава 3. Компилятор, работающий в режиме командной строки.....448
Параметры компилятора.........................................449
Параметры-директивы компилятора...............................451
Параметры режима компилятора..................................453
Параметр компиляции /C........................................453
Параметр формирования /М......................................454
Параметр построения /B........................................455
Параметр поиска ошибки /F.....................................455
Параметр буфера компоновки /L.................................457
Параметр сокращенного вывода /Q...............................457

B.Pascal 7 & Objects/PG - 20 -

Параметры для pаботы с каталогами.............................458
Параметр каталога /T..........................................458
Параметр каталога выполняемых файлов и файлов модулей (/E)....459
Параметр каталога включаемых файлов (/I)......................459
Параметр каталогов модулей (/R) (только для BPC)..............460
Параметр каталогов модулей (/U)...............................460
Параметр каталогов объектных файлов (/О)......................460
Параметры отладки.............................................461
Параметр файла MAP (/G).......................................461
Параметр автономной отладки (/V)..............................461
Файлы TPC.CFG и BPC.CFG.......................................463
Параметры компилятора, специфические для конкретной
платформы (только для BPC)...................................464
Глава 4. Сообщения об ошибках.................................465
Сообщения компилятора об ошибках..............................465
Ошибки 1 - 50.................................................466
Ошибки 51 - 100...............................................472
Ошибки 101 - 150..............................................478
Ошибки 151 - 169..............................................484
Ошибки этапа выполнения.......................................488
Ошибки DOS....................................................488
Ошибки ввода-вывода...........................................490
Критические ошибки............................................492
Фатальные ошибки..............................................493
Ошибки DPMI...................................................497
Ошибки DPMIINST...............................................497
Ошибки фиктивного модуля......................................497
Ошибки администратора этапа выполнения........................499
Ошибки DPMI-сервера...........................................502
Приложение A. Использование редактора.........................505
Подробное описание команд работы с блоками Таблица A.2........510
Описание команд работы с блоками фирмы Borland Таблица A.3...512
Другие команды редактирования.................................512
Поиск с регулярными выражениями...............................515
Приложение B. Краткий справочник по директивам компилятора....516
Приложение C. Зарезервированные слова и стандартные
директивы....................................................523
Приложение D. Символы ASCII...................................524

B.Pascal 7 & Objects/PG - 21 -

-------------------------------------------------------------------
Введение
-----------------------------------------------------------------

Данное руководство содержит материалы для программистов, уже
имеющих некоторый опыт работы.

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

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

* понять, что делает каждая директива компилятора, как она
работает и как ее использовать;

* узнать, как работать с компилятором режима командной стро-
ки;

* просмотреть список зарезервированных слов и стандартные
директивы компилятора;

* ознакомиться с командами редактора;

* просмотреть в краткой справочной таблице директивы компи-
лятора;

* ознакомиться с алфавитно-цифровыми символами ASCII, иден-
тификаторами и управляющими инструкциями.

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

Об этом руководстве
-----------------------------------------------------------------

Данное руководство разбито на четыре главы и четыре приложе-
ния:

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

Глава 2 "Директивы компилятора" поясняет, как использовать
три типа директив компилятора и представляет детальный пере-
чень этих директив в алфавитном порядке.

B.Pascal 7 & Objects/PG - 22 -


Глава 3 "Компиляторы, работающие в режиме командной строки"
поясняет, как использовать компиляторы режима командной
строки.

В Главе 4 "Сообщения об ошибках" перечислены в алфавитном
порядке все сообщения об ошибках, которые вы можете обнару-
жить, и поясняется, что они означают.

Приложение A "Справочник по редактору" поясняет наборы ко-
манд CUA и альтернативный набор, которые вы можете использо-
вать при редактировании исходного кода.

В Приложении B "Краткий справочник по директивам компилято-
ра" перечисляются директивы компилятора, эквивалентные им
параметры командной строки и их описание.

В Приложении C "Зарезервированные слова и стандартные дирек-
тивы" перечисляются зарезервированные слова и стандартные
директивы Borland Pascal.

Примечание: Обзор модулей, которые можно найти в биб-
лиотеке исполняющей системы Borland Pascal, содержится в
"Руководстве по языку".


B.Pascal 7 & Objects/PG - 23 -

--------------------------------------------------------------------
Глава 1. Справочник по библиотеке
-----------------------------------------------------------------

В данной главе описываются все процедуры и функции Borland
Pascal with Objects, а также его переменные, типы и константы. В
начале описания каждого элемента указан модули или модули, содер-
жащие этот элемент данных или подпрограмму, а ниже следуют формат
описания, целевая платформа и относящиеся к данному элементу при-
мечания. В случае специальных ограничений они также описываются.
Перекрестные ссылки и примеры дают дополнительную информацию об
использовании указанного элемента. Это иллюстрируется приведенным
ниже примером процедуры Sample.


Процедура Sample Содержащие ее модули
-----------------------------------------------------------------

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

Целевая платформа: Указывает целевую платформу для данного
элемента (защищенный режим DOS, реальный режим DOS или Windows).

Описание: Как описывается подпрограмма или элемент данных.
Для иллюстрации констант, значения которых не изменяются, вместо
описаний приведены таблицы.

Примечания: Специальная информация по данному элементу.

Ограничения: Специальные требования к данному элементу.

См. также: Родственные процедуры, переменные, функции, конс-
танты и типы, которые также описываются в данной главе.

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


B.Pascal 7 & Objects/PG - 24 -

--------------------------------------------------------------------
Константы, типы и переменные
-----------------------------------------------------------------

Тип ArcCoordsType модуль Graph
-----------------------------------------------------------------

Назначение: Используется в GetArcCoords для получения инфор-
мации о последнем вызове Arc или Ellipse.

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

Описание:

type
ArcCoordsType = record
X, Y: Integer;
XStart, YStart: Integer;
XEnd, YEnd: Integer;
end;

См. также: GetArcCoords.

Переменная AutoTracking модуль WinCrt
-----------------------------------------------------------------

Назначение: Для сохранения видимости курсора разрешает и
запрещает прокрутку окна.

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

Описание: var AutoTracking: Boolean;

Примечания: Когда AutoTracking имеет значение True, окно CRT
для обеспечения видимости курсора после каждой операции Write и
Writeln автоматически прокручивается. Если AutoTracking равно
False, то окно CRT не будет автоматически прокручиваться, и запи-
сываемый в окно текст может быть невидимым для пользователя.


B.Pascal 7 & Objects/PG - 25 -


Константы Bar модуль Graph
-----------------------------------------------------------------

Назначение: Управляет отображением "верха" трехмерного
столбца.

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

Примечания: Константы Bar используются в процедуре Bar3D для
управления отображением верхней части трехмерных столбцов.

-------------------T----------------¬
¦ Константа ¦ Значение ¦
+------------------+----------------+
¦ TopOn ¦ True ¦
¦ TopOff ¦ False ¦
L------------------+-----------------

См. также: Bar3D.

Операции BitBlt модуль Graph
-----------------------------------------------------------------

Назначение: Используется в процедурах PutImage и
SetWriteMode.

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

Примечания: Указанные логические операции представлены сле-
дующими значениями:

-------------------T----------------¬
¦ Константа ¦ Значение ¦
+------------------+----------------+
¦ CopyPut ¦ 0 (mov) ¦
¦ XORPut ¦ 1 (xor) ¦
+------------------+----------------+
¦ Используются только в PutImage: ¦
+------------------T----------------+
¦ OrPut ¦ 2 (or) ¦
¦ AndPut ¦ 3 (and) ¦
¦ NotPut ¦ 4 (not) ¦
L------------------+-----------------


B.Pascal 7 & Objects/PG - 26 -


Тип Bool модуль WinAPI
-----------------------------------------------------------------

Назначение: Булевский тип, используемый в модуле WinAPI.

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

Описание: type Bool = WordBool;

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

Переменная CheckBreak модуль Crt
-----------------------------------------------------------------

Назначение: Разрешает и запрещает проверки на Ctrl+Break.

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

Описание: var CheckBreak: Boolean;

Примечания: Когда CheckBreak имеет значение True, то нажатие
клавиш Ctrl+Break при следующем выводе на экран прерывает прог-
рамму. Когда CheckBreak имеет значение False, то нажатие клавиш
Ctrl+Break никакого действия не оказывает. На этапе выполнения
Crt сохраняет старый вектор прерывания Ctrl+Break $1B в глобаль-
ной переменной-указателе SaveInt1B.

См. также: KeyPressed, ReadKey, SaveInt1B.


B.Pascal 7 & Objects/PG - 27 -


Переменная CheckBreak модуль WinCrt
-----------------------------------------------------------------

Назначение: Разрешает и запрещает проверки на Ctrl+Break.

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

Описание: var CheckBreak: Boolean;

Примечания: Когда CheckBreak имеет значение True, то пользо-
ватель может завершить прикладную программу, выбрав в меню
Control окна CRT команду Close, дважды щелкнув "мышью" в блоке
управляющего меню окна или нажав ALt+F4. Аналогично, в любой мо-
мент для остановки приложения и перевода окна CRT в неактивное
состояние пользователь может нажать клавиши Ctrl+C или
Ctrl+Break. Когда переменная CheckBreak имеет значение False, все
эти средства запрещены.

См. также: KeyPressed, ReadKey, SaveInt1B.

Переменная CheckEof модуль Crt
-----------------------------------------------------------------

Назначение: Разрешает и запрещает символ конца файла.

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

Описание: var CheckEOF: Boolean;

Примечания: Когда CheckEOF имеет значение True, то при нажа-
тии клавиш Ctrl+Z во время чтения файла присвоенного экрану, ге-
нерируется символ конца файла. Когда CheckEOF имеет значение
False, то клавиши Ctrl+Z не действуют. По умолчанию CheckEOF рав-
но False.


B.Pascal 7 & Objects/PG - 28 -


Переменная CheckEof модуль WinCrt
-----------------------------------------------------------------

Назначение: Разрешает и запрещает символ конца файла.

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

Описание: var CheckEOF: Boolean;

Примечания: Когда CheckEOF имеет значение True, то при нажа-
тии клавиш Ctrl+Z во время чтения файла присвоенного окну CRT,
генерируется символ конца файла. Когда CheckEOF имеет значение
False, то клавиши Ctrl+Z не действуют. По умолчанию CheckEOF рав-
но False.

Переменная CheckSnow модуль Crt
-----------------------------------------------------------------

Назначение: Разрешает и запрещает проверку на помехи
("снег") для видеоадаптеров CGA.

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

Описание: var CheckSnow: Boolean;

Примечания: На большинстве адаптеров CGA, если символы запи-
сываются в видеопамять вне интервалов обратного хода горизонталь-
ной развертки, возникают помехи. На монохромных адаптерах, EGA
или VGA это не происходит.

При выборе цветного режима CheckSnow устанавливается в зна-
чение True, и запись в видеопамять происходит только во время об-
ратного хода горизонтальной развертки. Если вы работаете с новым
адаптером CGA, то в начале программы после каждого вызова
TextMode эту переменную можно установить в False. Это выключает
проверку на помехи и значительно ускоряет вывод.

Ограничения: Если DirectVideo имеет значение False, то пере-
менная CheckSnow не действует.

См. также: DirectVideo.


B.Pascal 7 & Objects/PG - 29 -


Константы отсечения модуль Graph
-----------------------------------------------------------------

Назначение: Управляет отсечением, используется в процедуре
SetViewPort.

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

Примечания: Когда отсечение разрешено, графический вывод от-
секается на границах области просмотра.

-------------------T----------------¬
¦ Константа ¦ Значение ¦
+------------------+----------------+
¦ ClipOn ¦ True ¦
¦ ClipOff ¦ False ¦
L------------------+-----------------

См. также: SetViewPort.

Переменная CmdLine модуль System
-----------------------------------------------------------------

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

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

Описание: var CmdLine: PChar;

Примечания: В библиотеке CmdLine имеет значение nil.


B.Pascal 7 & Objects/PG - 30 -


Переменная CmdShow модуль System
-----------------------------------------------------------------

Назначение: Содержит в программе значение параметра, которое
нужно передать ShowWindow при создании прикладной программой ос-
новного окна.

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

Описание: var CmdShow: Integer;

Примечания: В библиотеке CmdLine всегда имеет нулевое значе-
ние.

Константы цветов модуль Graph
-----------------------------------------------------------------

Назначение: Константы цветов, используемые SetPalette и
SetAllPalette.

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

----------------T--------T------------------¬
¦ Константа ¦Значение¦ Цвет ¦
+---------------+--------+------------------+
¦ Black ¦ 0 ¦ черный ¦
¦ Blue ¦ 1 ¦ синий ¦
¦ Green ¦ 2 ¦ зеленый ¦
¦ Cyan ¦ 3 ¦ бирюзовый ¦
¦ Red ¦ 4 ¦ красный ¦
¦ Magenta ¦ 5 ¦ малиновый ¦
¦ Brown ¦ 6 ¦ коричневый ¦
¦ LightGray ¦ 7 ¦ светло-серый ¦
¦ DarkGray ¦ 8 ¦ темно-серый ¦
¦ LightBlue ¦ 9 ¦ светло-голубой ¦
¦ LightGreen ¦ 10 ¦ светло-зеленый ¦
¦ LightCyan ¦ 11 ¦ светло-бирюзовый ¦
¦ LightRed ¦ 12 ¦ светло-красный ¦
¦ LightMagenta ¦ 13 ¦ светло-малиновый ¦
¦ Yellow ¦ 14 ¦ желтый ¦
¦ White ¦ 15 ¦ белый ¦
L---------------+--------+-------------------

С. также: SetAllPalette, SetPalette, SetColor.



B.Pascal 7 & Objects/PG - 31 -


Константы цветов для SetRGBPalette модуль Graph
-----------------------------------------------------------------

Назначение: Константы цветов, используемые в SetRGBPalette
для выбора стандартных цветов EGA и на графическом адаптере IBM
8514.

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

-------------------T--------------------------¬
¦ Константа ¦Значение Цвет ¦
+------------------+--------------------------+
¦ EGABlack ¦ 0 (темные цвета) ¦
¦ EGABlue ¦ 1 ¦
¦ EGAGreen ¦ 2 ¦
¦ EGACyan ¦ 3 ¦
¦ EGARed ¦ 4 ¦
¦ EGAMagenta ¦ 5 ¦
¦ EGABrown ¦ 20 ¦
¦ EGALightGray ¦ 7 ¦
+------------------+--------------------------+
¦ EGADarkGray ¦ 56 (светлые цвета) ¦
¦ EGALightBlue ¦ 57 ¦
¦ EGALightGreen ¦ 58 ¦
¦ EGALightCyan ¦ 59 ¦
¦ EGALightRed ¦ 60 ¦
¦ EGALightMagenta ¦ 61 ¦
¦ EGAYellow ¦ 62 ¦
¦ EGAWhite ¦ 63 ¦
L------------------+---------------------------

С. также: SetRGBPalette.


B.Pascal 7 & Objects/PG - 32 -


Константы режима Crt модуль Crt
-----------------------------------------------------------------

Назначение: Используются для представления текстовых и стро-
ковых режимов Crt.

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

Примечания: BW40, CO40 и CO80 представляют четыре цветных
текстовых режима, поддерживаемых цветным графическим адаптером
IBM PC (CGA). Константа Mono представляет единственный черно-бе-
лый режим, поддерживаемый монохромным адаптером IBM PC. Font8x9
представляет 43- и 50-строчный режимы EGA/VGA и используются с
CO80 или LastMode. LastMode возвращает последний активный тексто-
вый режим после использования графики.

------------T--------T---------------------------------------¬
¦ Константа ¦Значение¦ Описание ¦
+-----------+--------+---------------------------------------+
¦ BW40 ¦ 0 ¦ 40х25, черно-белый на цветном адаптере¦
¦ C40 ¦ 1 ¦ 40х25, цветной на цветном адаптере ¦
¦ BW80 ¦ 2 ¦ 80х25, черно-белый на цветном адаптере¦
¦ C80 ¦ 3 ¦ 80х25, цветной на цветном адаптере ¦
¦ Mono ¦ 7 ¦ 80х25, черно-белый на монохромном ¦
¦ ¦ ¦ адаптере ¦
¦ Font8x8 ¦ 256 ¦ для адаптеров EGA/VGA (50 строк) ¦
¦ C40 ¦ C040 ¦ для совместимости с версией 3.0 ¦
¦ C80 ¦ C080 ¦ для совместимости с версией 3.0 ¦
L-----------+--------+----------------------------------------

См. также: TextMode.



B.Pascal 7 & Objects/PG - 33 -


Переменная Cursor модуль WinCrt
-----------------------------------------------------------------

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

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

Описание: const Cursor: TPoint = (X: 0; Y: 0);

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

Тип DateTime модуль Dos
-----------------------------------------------------------------

Назначение: Используется подпрограммами UnpackTime и
PackTime для проверки и построения 4-байтовых упакованных значе-
ний даты и времени, которые используются в GetTime, SetFTime,
FindFirst и FindNext.

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

Описание:

type
DateTime = record
Year, Month, Day, Hour, Min, Sec: Word;
end;

Примечания: Допустимыми значениями являются для Year -
1980..2099, для Month - 1..12, для Day - 1..31, для Hour - 0..23,
для Min 0..59, для Sec - 0..59.

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



B.Pascal 7 & Objects/PG - 34 -


Переменная DirectVideo модуль Crt
-----------------------------------------------------------------

Назначение: Разрешает или запрещает прямой доступ к памяти
для процедур Write и Writeln, которые выводят данные на экран.

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

Описание: var DirectVideo: Boolean;

Примечание: Когда DirectVideo равно True, операции Write и
Writeln в связанные с CRT файлы будут записывать символы непос-
редственно в видеопамять, а не вызывать для их вывода BIOS. Когда
DirectVideo имеет значение False, все символы записываются через
вызовы BIOS, что существенно замедляет процесс.

По умолчанию DirectVideo всегда равно True. Если по каким-то
причинам требуется, чтобы символы выводились через вызовы BIOS,
в начале программы и после каждого вызова TextMode установите
DirectVideo в False.

См. также: CheckSnow.



B.Pascal 7 & Objects/PG - 35 -


Переменная DosError модуль Dos, WinDos
-----------------------------------------------------------------

Назначение: Используется во многих подпрограммах модулей Dos
и WinDos.

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

Описание: var DosError: Integer;

Примечания: Значения, записанные в DosError, представляют
собой коды ошибок DOS. Значение 0 указывает на отсутствие ошибки.

-----------------T---------------------------------¬
¦ Код ошибки DOS ¦ Смысл ¦
+----------------+---------------------------------+
¦ 2 ¦ Файл не найден. ¦
¦ 3 ¦ Маршрут не найден. ¦
¦ 5 ¦ Доступ запрещен. ¦
¦ 6 ¦ Недопустимый описатель файла. ¦
¦ 8 ¦ Не хватает памяти. ¦
¦ 10 ¦ Недопустимая операционная среда.¦
¦ 11 ¦ Неверный формат. ¦
¦ 18 ¦ Больше нет файлов. ¦
L----------------+----------------------------------

Подробное описание сообщений DOS об ошибках вы можете найти
в Главе 4 "Сообщения об ошибках".

См. также: CreateDir, Exec, FindFirst, FindNext, GetCurDir,
GetFAttr, GetFTime. RemoveDir, SetCurDir, SetFAttr, SetFTime.



B.Pascal 7 & Objects/PG - 36 -


Драйверы и константы режима модуль Graph
-----------------------------------------------------------------

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

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

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

Константы драйверов модуля Graph Таблица 1.1
-------------------T--------T-----------------------------------¬
¦Константа драйвера¦Значение¦ Смысл ¦
+------------------+--------+-----------------------------------+
¦ Detect ¦ 0 ¦ требуется автоматическое распозна-¦
¦ ¦ ¦ вание ¦
¦ CGA ¦ 1 ¦ ¦
¦ MCGA ¦ 2 ¦ ¦
¦ EGA ¦ 3 ¦ ¦
¦ EGA64 ¦ 4 ¦ ¦
¦ EGAMono ¦ 5 ¦ ¦
¦ RESERVED ¦ 6 ¦ зарезервировано (не используется) ¦
¦ HercMono ¦ 7 ¦ ¦
¦ ATT400 ¦ 8 ¦ ¦
¦ VGA ¦ 9 ¦ ¦
¦ PC3270 ¦ 10 ¦ ¦
¦ CurrentDriver ¦ -128 ¦ передается GetModeRange ¦
L------------------+--------+------------------------------------


B.Pascal 7 & Objects/PG - 37 -


Константы драйверов модуля Graph Таблица 1.2
---------------T--------T---------T-----T-----------------T-----¬
¦ Имя ¦Значение¦ Строк x ¦Па- ¦ Цвета ¦Стра-¦
¦ константы ¦ ¦ столбцы ¦литра¦ ¦ницы ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ ATT400C0 ¦ 0 ¦ 320x200 ¦ 0 ¦ Светло-серый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ светло-красный, ¦ ¦
¦ ¦ ¦ ¦ ¦ желтый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ ATT400C1 ¦ 1 ¦ 320x200 ¦ 1 ¦ Светло-бирюзовый¦ 1 ¦
¦ ¦ ¦ ¦ ¦ светло-малиновый¦ ¦
¦ ¦ ¦ ¦ ¦ белый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ ATT400C2 ¦ 2 ¦ 320x200 ¦ 2 ¦ Бирюзовый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ малиновый, ¦ ¦
¦ ¦ ¦ ¦ ¦ светло-серый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ ATT400Med ¦ 4 ¦ 640x200 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ ATT400Hi ¦ 5 ¦ 640x400 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ CGAC0 ¦ 0 ¦ 320x200 ¦ 0 ¦ Светло-серый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ светло-красный, ¦ ¦
¦ ¦ ¦ ¦ ¦ желтый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ CGAC1 ¦ 1 ¦ 320x200 ¦ 1 ¦ Светло-бирюзовый¦ 1 ¦
¦ ¦ ¦ ¦ ¦ светло-малиновый¦ ¦
¦ ¦ ¦ ¦ ¦ белый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ CGAC2 ¦ 2 ¦ 320x200 ¦ 2 ¦ Зеленый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ красный, ¦ ¦
¦ ¦ ¦ ¦ ¦ коричневый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ CGAC3 ¦ 3 ¦ 320x200 ¦ 3 ¦ Бирюзовый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ малиновый, ¦ ¦
¦ ¦ ¦ ¦ ¦ светло-серый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ CGAHi ¦ 4 ¦ 640x200 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ EGALo ¦ 0 ¦ 640x200 ¦ ¦ 16 цветов ¦ 4 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ EGAHi ¦ 1 ¦ 640x350 ¦ ¦ 16 цветов ¦ 2 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ EGA64Lo ¦ 0 ¦ 640x200 ¦ ¦ 16 цветов ¦ 1 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ EGA64Hi ¦ 1 ¦ 640x350 ¦ ¦ 4 цвета ¦ 1 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ EGAMonoHi ¦ 3 ¦ 640x350 ¦ ¦ 64K на плату, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ 256К на плату. ¦ 2 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ HercMonoHi ¦ 0 ¦ 720x348 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+

B.Pascal 7 & Objects/PG - 38 -

¦ IBM8514Lo ¦ 0 ¦ 640x480 ¦ ¦ 256 цветов ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ IBM8514Hi ¦ 1 ¦ 1024x768¦ ¦ 256 цветов ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ MCGAC0 ¦ 0 ¦ 320x200 ¦ 0 ¦ Светло-серый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ светло-красный, ¦ ¦
¦ ¦ ¦ ¦ ¦ желтый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ MCGAC1 ¦ 1 ¦ 320x200 ¦ 1 ¦ Светло-бирюзовый¦ 1 ¦
¦ ¦ ¦ ¦ ¦ светло-малиновый¦ ¦
¦ ¦ ¦ ¦ ¦ белый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ MCGAC2 ¦ 2 ¦ 320x200 ¦ 2 ¦ Зеленый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ красный, ¦ ¦
¦ ¦ ¦ ¦ ¦ коричневый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ MCGAC3 ¦ 3 ¦ 320x200 ¦ 3 ¦ Бирюзовый, ¦ 1 ¦
¦ ¦ ¦ ¦ ¦ малиновый, ¦ ¦
¦ ¦ ¦ ¦ ¦ светло-серый. ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ MCGAMed ¦ 4 ¦ 640x200 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ MCGAHi ¦ 5 ¦ 640x480 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ PC3270Hi ¦ 0 ¦ 720x350 ¦ ¦ ¦ ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ VGALo ¦ 0 ¦ 640x200 ¦ ¦ 16 цветов ¦ 4 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ VGAMed ¦ 1 ¦ 640x200 ¦ ¦ 16 цветов ¦ 2 ¦
+--------------+--------+---------+-----+-----------------+-----+
¦ VGAHi ¦ 2 ¦ 640x480 ¦ ¦ 16 цветов ¦ 1 ¦
L--------------+--------+---------+-----+-----------------+------

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



B.Pascal 7 & Objects/PG - 39 -


Переменная ErrorAddr модуль System
-----------------------------------------------------------------

Назначение: Содержит адрес оператора, вызвавшего ошибку эта-
па выполнения.

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

Описание: var ErrorAddr: Pointer;

Примечания: Если программа завершается нормально или оста-
навливается из-за вызова Halt, ErrorAddr имеет значение nil. Если
программа завершается из-за ошибки этапа выполнения, то ErrorAddr
содержит адрес ошибочного оператора. Дополнительную информацию
можно найти в разделе "Процедуры выхода в Главе 22 "Руководства
по языку".

См. также: ExitCode, ExitProc.

Константы флагов fcXXXX модуль WinDos
-----------------------------------------------------------------

Назначение: Данные флаги используются функцией FileSplit.

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

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

-------------------T----------------¬
¦ Константа ¦ Значение ¦
+------------------+----------------+
¦ fcExtension ¦ $0001 ¦
¦ fcFileName ¦ $0002 ¦
¦ fcDirectory ¦ $0004 ¦
¦ fcWildcards ¦ $0008 ¦
L------------------+-----------------

См. также: FileSplit.



B.Pascal 7 & Objects/PG - 40 -


Константы атрибутов файла модули Dos, WinDos
-----------------------------------------------------------------

Назначение: Используется для построения атрибутов файлов при
работе с процедурами GetFAttr, SetFAttr, FindFirst и FindNext.

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

Примечания:

-----------------T------------------T--------------¬
¦ Константа Dos ¦ Константа WinDos ¦ Значение ¦
+----------------+------------------+--------------+
¦ ReadOnly ¦ faReadOnly ¦ $01 ¦
¦ Hidden ¦ faHidden ¦ $02 ¦
¦ SysFile ¦ faSysFile ¦ $04 ¦
¦ VolumeID ¦ faVolumeID ¦ $08 ¦
¦ Directory ¦ faDirectory ¦ $10 ¦
¦ Archive ¦ faArchive ¦ $20 ¦
¦ AnyFile ¦ faAnyFile ¦ $3F ¦
L----------------+------------------+---------------

Константы являются аддитивными, так что оператор:

FindFirst('*.*', ReadOnly + Directory, S); { DOS }
FindFirst('*.*', faReadOnly + faDirectory, S); { Windows }

будет находить все обычные файлы, а также файлы, доступные только
по чтению и подкаталоги текущего каталога. Константа AnyFile (или
faAnyFile) представляет собой просто сумму атрибутов.

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



B.Pascal 7 & Objects/PG - 41 -


Константы длины имени файла модуль WinDos
-----------------------------------------------------------------

Назначение: Содержит максимальные длины строк компонентов
имени файла, используемых в функциях FileSearch и FileExpand.

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


Примечания:

-------------------T-------------¬
¦ Константа ¦ Значение ¦
+------------------+-------------+
¦ fsPathName ¦ 79 ¦
¦ fcDirectory ¦ 67 ¦
¦ fcFileName ¦ 8 ¦
¦ fcExtension ¦ 4 ¦
L------------------+--------------

См. также: FileExpand, FileSplit, FileSearch.

Типы работы со строками модуль Dos
-----------------------------------------------------------------

Назначение: Строковые типы используются различными процеду-
рами и функциями модуля Dos.

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

Примечание: Определены следующие типы:

ComStr = string[127]; { командная строка }
PathStr = string[79]; { полная строка имени маршрута }
DirStr = string[67]; { строка диска и каталога }
NameStr = string[8]; { строка имени файла }
ExtStr = string[4]; { строка расширения имени файла }

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



B.Pascal 7 & Objects/PG - 42 -


Переменная FileMode модуль System
-----------------------------------------------------------------

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

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

Описание: var FileMode: Byte;

Примечание: Диапазон допустимых значений FileMode зависит от
используемой версии DOS. Однако для всех версий определены следу-
ющие режимы:

0 только чтение
1 только запись
2 чтение/запись

Значение по умолчанию (2) допускает как чтение, так и за-
пись. Присваивание FileMode другого значения вызывает использова-
ние этого режима во всех последующих операциях Reset. Новый файл,
использующий Rewrite, всегда открывается в режиме чтения/записи
(то есть FileMode = 2).

В версиях DOS 3.x и выше определяются дополнительные конс-
танты, которые относятся в основном к совместному использованию
файлов в сетях. Подробности вы можете узнать в руководствах по
DOS.



B.Pascal 7 & Objects/PG - 43 -


Тип FileRec модуль Dos
-----------------------------------------------------------------

Назначение: Определение записи, предназначенное для внутрен-
него использования в Borland Pascal и описанное также в модуле
Dos.

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

Описание:

type
FileRec = record
Handle: Word;
Mode: Word;
RecSize: Word;
Private: array[1..26] of Byte;
UserData: array[1..16] of Byte;
Name: array[0..79] of Char;
end;

Примечания: FileRec определяет внутренний формат данных для
типизированных и нетипизированных файлов.

См. также: TextRec.



B.Pascal 7 & Objects/PG - 44 -


Константы образцов закраски модуль Graph
-----------------------------------------------------------------

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

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

Примечания: Для определения собственного образца закраски
используйте SetFillPattern, затем вызовите SetFillStyle(UserFill,
SomeColor) и сделайте свой образец закраски активным.

-----------------T--------T----------------------------------¬
¦ Константа ¦Значение¦ Описание ¦
+----------------+--------+----------------------------------+
¦ EmptyFill ¦ 0 ¦ Закраска области фоновым цветом. ¦
¦ SolidFill ¦ 1 ¦ Непрерывная закраска области. ¦
¦ LineFill ¦ 2 ¦ Закраска ---------------------. ¦
¦ ltSlashFill ¦ 3 ¦ Закраска /////. ¦
¦ SlashFill ¦ 4 ¦ Закраска жирными линиями ////. ¦
¦ BkSlashFill ¦ 5 ¦ Закраска жирными линиями \\\\. ¦
¦ LtBkSlashFill ¦ 6 ¦ Закраска \\\\\. ¦
¦ HatchFill ¦ 7 ¦ Закраска редкой штриховкой. ¦
¦ XHatchFill ¦ 8 ¦ Закраска частой шриховкой (в ¦
¦ ¦ ¦ обоих направлениях). ¦
¦ Interleave ¦ 9 ¦ Закраска прерывистой линией. ¦
¦ WideDotFill ¦ 10 ¦ Закраска линией из редких точек. ¦
¦ CloseDotFill ¦ 11 ¦ Закраска линией из частых точек. ¦
¦ UserFill ¦ 12 ¦ Закраска, определенная пользова- ¦
¦ ¦ ¦ телем. ¦
L----------------+--------+-----------------------------------

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



B.Pascal 7 & Objects/PG - 45 -


Тип FillPatternType модуль Dos
-----------------------------------------------------------------

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

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

Описание: FillPatternType = array[1..8] of Byte;

См. также: образец закраски, GetFillPattern, SetFillPattern.

Тип FillSettingType модуль Graph
-----------------------------------------------------------------

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

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

Описание:

type
FillSettingsType = record
Pattern: Word;
Color: Word;
end;

См. также: GetFillSettings.



B.Pascal 7 & Objects/PG - 46 -


Константы флагов модуль Dos, WinDos
-----------------------------------------------------------------

Назначение: Используется для проверки отдельных битовых фла-
гов в регистре флагов после вызова функции Intr или MsDos.

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

Примечания:

-------------------T----------------¬
¦ Константа ¦ Значение ¦
+------------------+----------------+
¦ FCarry ¦ $0001 ¦
¦ FParity ¦ $0004 ¦
¦ FAuxiliary ¦ $0010 ¦
¦ FZero ¦ $0040 ¦
¦ FSign ¦ $0080 ¦
¦ FOverFlow ¦ $0800 ¦
L------------------+-----------------

Например, если R - это регистровая запись, то проверки:

R.Flags and FCArry <> 0
R.Flags and FZero = 0

дают True, если, соответственно, установлен флаг переноса и сбро-
шен флаг нуля.

См. также: Intr, MsDos.



B.Pascal 7 & Objects/PG - 47 -


Константы fmXXXX модуль Dos, WinDos
-----------------------------------------------------------------

Назначение: Определяет допустимые значения поля Mode записи
текстового файла TextRec и TFileRec.

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

Примечания: Поле Mode файловых переменных Borland Pascal со-
держит одну из определенных ниже переменных:

-------------------T----------------¬
¦ Константа ¦ Значение ¦
+------------------+----------------+
¦ fmClosed ¦ $D7B0 ¦
¦ fmInput ¦ $D7B1 ¦
¦ fmOutput ¦ $D7B2 ¦
¦ fmInOut ¦ $D7B3 ¦
L------------------+-----------------

Константы шрифтов модуль Graph
-----------------------------------------------------------------

Назначение: Константы, идентифицирующие шрифты.

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

Примечания:

-------------------T--------------------------¬
¦ Константа ¦ Значение ¦
+------------------+--------------------------+
¦ DefaultFont ¦ 0 (растровый шрифт 8х8) ¦
¦ TriplexFont ¦ 1 (векторный шрифт) ¦
¦ SmallFont ¦ 2 ¦
¦ SanSerifFont ¦ 3 ¦
¦ GothicFont ¦ 4 ¦
¦ HorizDir ¦ 0 (слева-направо) ¦
¦ VertDir ¦ 1 (сверху-вниз) ¦
¦ UserCharSize ¦ 0 (определенный пользо- ¦
¦ ¦ вателем размер Char) ¦
L------------------+---------------------------

См. также: GetTextSettings, SetTextStyle, TextSettingsType.



B.Pascal 7 & Objects/PG - 48 -


Переменная FreeList модуль System
-----------------------------------------------------------------

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

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

Описание: var FreeList: Pointer;

Примечания: Переменная FreeList указывает на первый свобод-
ный блок в динамически распределяемой области памяти. Этот блок
содержит указатель на следующий свободный блок, в свою очередь
содержащий указатель на следующий свободный блок и т.д. Последний
свободный блок содержит указатель на вершину динамически распре-
деляемой области. Если в списке нет свободных блоков, FreeList
будет равно HeapPtr. Подробности вы можете узнать в Главе 13 "Ру-
ководства по языку".

См. также: Dispose, FreeMem, HeapPtr.



B.Pascal 7 & Objects/PG - 49 -


Константы флага памяти gmem_XXXX модуль WinAPI
-----------------------------------------------------------------

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

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

Примечания:

-----------------------T----------------------------------------¬
¦ Константа ¦ Описание ¦
+----------------------+----------------------------------------+
¦ gmem_DDEShare ¦ Только для Windows. Используется для¦
¦ ¦ распределения совместно используемой¦
¦ ¦ переменной, применяемой в протоколе ди-¦
¦ ¦ намического обмена данными DDE. ¦
+----------------------+----------------------------------------+
¦ gmem_Discarded ¦ Возвращается функцией GlobalFlags для¦
¦ ¦ указания выгруженного блока памяти. ¦
+----------------------+----------------------------------------+
¦ gmem_Discardable ¦ Возвращается функцией GlobalFlags для¦
¦ ¦ указания выгружаемого блока памяти. ¦
+----------------------+----------------------------------------+
¦ gmem_Fixed ¦ Используется для распределения фиксиро-¦
¦ ¦ ванной памяти. ¦
+----------------------+----------------------------------------+
¦ gmem_LockCount ¦ Логическая операция and этой константы¦
¦ ¦ и значения, возвращаемого GlobalFlags,¦
¦ ¦ дает счетчик блокировки блока памяти. ¦
+----------------------+----------------------------------------+
¦ gmem_Modify ¦ Используется для распределения переме-¦
¦ ¦ щаемой памяти. ¦
+----------------------+----------------------------------------+
¦ gmem_NoCompact ¦ Только для Windows. Используется для¦
¦ ¦ указания того, что память не должна¦
¦ ¦ упаковываться или выгружаться. ¦
+----------------------+----------------------------------------+
¦ gmem_NoDiscard ¦ Только для Windows. Используется для¦
¦ ¦ указания того, что запрос на распреде-¦
¦ ¦ ление не должен выгружать память. ¦
+----------------------+----------------------------------------+
¦ gmem_Not_Banked ¦ Только для реального режима. Используе-¦
¦ ¦ тся для распределение небанкируемой па-¦
¦ ¦ мяти. ¦
+----------------------+----------------------------------------+
¦ gmem_Notify ¦ Используется при распределении выгружа-¦
¦ ¦ емых блоков для указания того, что в¦
¦ ¦ случае выгрузки блока следует вызвать¦
¦ ¦ функцию уведомления. ¦
+----------------------+----------------------------------------+
¦ gmem_ZeroInit ¦ Используется для задания инициализации¦
¦ ¦ содержимого вновь распределенной памяти¦

B.Pascal 7 & Objects/PG - 50 -

¦ ¦ нулями. ¦
L----------------------+-----------------------------------------

См. также: GlobalAlloc, GlobalFlags, GlobalReAlloc.

Переменная GraphFreeMemPtr модуль Graph
-----------------------------------------------------------------

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

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

Описание: var GraphFreeMemPtr: Pointer;

Примечания: Первоначально GraphFreeMemPtr указывает на подп-
рограмму освобождения динамически распределяемой области памяти
модуля Graph. Если ваша программа обеспечивает свое собственное
управление памятью, то присвойте этой переменной адрес своей
подпрограммы освобождения памяти. См. Главу 19 "Использование
графического интерфейса фирмы Borland" "Руководства по языку",
где вы найдете дополнительную информацию по этой подпрограмме.



B.Pascal 7 & Objects/PG - 51 -


Переменная GraphGetMemPtr модуль Graph
-----------------------------------------------------------------

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

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

Описание: var GraphGetMemPtr: Pointer;

Примечания: Первоначально GraphGetMemPtr указывает на подп-
рограмму распределения динамической области памяти модуля Graph.
Если ваша программа обеспечивает свое собственное управление па-
мятью, то присвойте этой переменной адрес своей подпрограммы
распределения памяти. См. Главу 19 "Использование графического
интерфейса фирмы Borland" "Руководства по языку", где вы найдете
дополнительную информацию по этой подпрограмме.



B.Pascal 7 & Objects/PG - 52 -


Константы grXXXX модуль Graph
-----------------------------------------------------------------

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

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

-------------------T-------T---------------------¬
¦ Константа ¦ Код ¦ Соответствующее ¦
¦ ошибки графики ¦ ошибки¦ сообщение об ошибке¦
+------------------+-------+---------------------+
¦ grOk ¦ 0 ¦ нет ошибки ¦
¦ grNoInitGraph ¦ -1 ¦ графика не инициали-¦
¦ ¦ ¦ зирована ¦
¦ grNotDetected ¦ -2 ¦ графические средства¦
¦ ¦ ¦ не найдены ¦
¦ grFileNotFound ¦ -3 ¦ файл не найден ¦
¦ grInvalidDriver ¦ -4 ¦ недопустимый драйвер¦
¦ grNoLoadMem ¦ -5 ¦ память не загружена ¦
¦ grNoScanMem ¦ -6 ¦ ошибка при просмотре¦
¦ ¦ ¦ памяти ¦
¦ grNoFloodMem ¦ -7 ¦ ошибка при закраске ¦
¦ grFontNotFound ¦ -8 ¦ шрифт не найден ¦
¦ grNoFontMem ¦ -9 ¦ шрифт не загружен в¦
¦ ¦ ¦ память ¦
¦ grInvalidMode ¦ -10 ¦ недопустимый режим¦
¦ grError ¦ -11 ¦ ошибка графики ¦
¦ grIOError ¦ -12 ¦ ошибка ввода-вывода¦
¦ ¦ ¦ графики ¦
¦ grInvalidFont ¦ -13 ¦ недопустимый файл¦
¦ ¦ ¦ шрифта ¦
¦ grInvalidFontNum ¦ -14 ¦ недопустимый номер¦
¦ ¦ ¦ шрифта ¦
L------------------+-------+----------------------

См. также: GraphResult.



B.Pascal 7 & Objects/PG - 53 -


Переменная HeapAllocFlags модуль System
-----------------------------------------------------------------

Назначение: Определяет флаги распределения блока администра-
тора памяти.

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

Описание: var HeapAllocFlags: Word;

Примечания: Начальное значение HeapAllocFlags равно
gmem_Moveable (для программ) или gmem_Moveable + gmemDDEShare
(для библиотек).

HeapAllocFlags содержит флаги атрибутов, которые администра-
тор памяти передает функции GlobalAlloc при выделении блоков ди-
намически распределяемой памяти. Изменять значение переменной
HeapAllocFlags обычно не требуется. См. Главу 21 ("Вопросы управ-
ления памятью") в "Руководстве по языку", где вы найдете более
подробную информацию.

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

Переменная HeapBlock модуль System
-----------------------------------------------------------------

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

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

Описание: var HeapBlock: Word;

Примечания: Начальное значение HeapBlock равно 8192. Изме-
нять значение этой переменной обычно не требуется. См. Главу 21
("Вопросы управления памятью") в "Руководстве по языку", где вы
найдете более подробную информацию о работе администратора дина-
мически распределяемой памяти.

См. также: HeapLimit.



B.Pascal 7 & Objects/PG - 54 -


Переменная HeapEnd модуль System
-----------------------------------------------------------------

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

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

Описание: var HeapEnd: Pointer;

Примечания: HeapEnd инициализируется системным модулем в на-
чале работы программы. См. Главу 21 ("Вопросы управления па-
мятью") в "Руководстве по языку", где вы найдете более подробную
информацию.

См. также: HeapPtr, HeapOrg.



B.Pascal 7 & Objects/PG - 55 -


Переменная HeapError модуль System
-----------------------------------------------------------------

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

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

Описание: var HeapError: Pointer;

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

HeapError := @HeapFunc;

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

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



B.Pascal 7 & Objects/PG - 56 -


Переменная HeapLimit модуль System
-----------------------------------------------------------------

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

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

Описание: var HeapLimit: Word;

Примечания: Начальное значение HeapLimit равно 1024. Изме-
нять значение этой переменной обычно не требуется. См. Главу 21
("Вопросы управления памятью") в "Руководстве по языку", где вы
найдете более подробную информацию о работе администратора дина-
мически распределяемой области памяти.

См. также: HeapBlock.

Переменная HeapList модуль System
-----------------------------------------------------------------

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

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

Описание: var HeapList: Word;

Примечания: Переменная HeapList предназначена для внутренне-
го использования администратором динамически распределяемой об-
ласти и сохраняет значение селектора первого выделенного блока
памяти. Если вторично распределенные блоки памяти отсутствуют, то
она равна нулю. Изменять значение этой переменной обычно не тре-
буется. См. Главу 21 ("Вопросы управления памятью") в "Руководс-
тве по языку", где вы найдете более подробную информацию.

См. также: HeapBlock.



B.Pascal 7 & Objects/PG - 57 -


Переменная HeapOrg модуль System
-----------------------------------------------------------------

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

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

Описание: var HeapOrg: Pointer;

Примечания: Переменная HeapOrg содержит адрес конца динами-
чески распределяемой области. См. Главу 21 ("Вопросы управления
памятью") в "Руководстве по языку", где вы найдете более подроб-
ную информацию.

См. также: HeapEnd, HeapPtr.

Переменная HeapPtr модуль System
-----------------------------------------------------------------

Назначение: Указывает на начало динамически распределяемой
памяти ("вершина").

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

Описание: var HeapPtr: Pointer;

Примечания: Переменная HeapPtr содержит адрес начала динами-
чески распределяемой области. См. Главу 21 ("Вопросы управления
памятью") в "Руководстве по языку", где вы найдете более подроб-
ную информацию.

См. также: HeapEnd, HeapOrg.



B.Pascal 7 & Objects/PG - 58 -


Переменная HInstance модуль System
-----------------------------------------------------------------

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

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

Описание: var HInstance: Word;

Примечания: Данный идентификатор экземпляра идентифицирует
программу, когда она работает под Windows или в защищенном режиме
DOS.

Переменная HPrevInst модуль System
-----------------------------------------------------------------

Назначение: Содержит описатель экземпляра прикладной прог-
раммы.

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

Описание: var HPrevInst: Word;

Примечания: Если экземпляров предыдущей прикладной программы
нет, то значение HPrevInst равно 0. В библиотеке значение
HPrevInst всегда равно 0.



B.Pascal 7 & Objects/PG - 59 -


Константы Id_XXXX модуль WinAPI
-----------------------------------------------------------------

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

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

Примечания: Данные константы определяют значения, возвращае-
мые функцией MessageBox. Если окно сообщений содержит командную
кнопку отмены Cancel, то Id_Cancel возвращается при выборе ко-
мандной кнопки Cancel или по клавише Esc. Если окно сообщений не
содержит командную кнопку отмены Cancel, то нажатие клавиши Esc
не действует.

------------------T-----------------------------¬
¦ Константа ¦ Описание ¦
+-----------------+-----------------------------+
¦ Id_Abort ¦ Задействована кнопка Abort. ¦
¦ Id_Cancel ¦ Задействована кнопка Cancel.¦
¦ Id_Ignore ¦ Задействована кнопка Ignore.¦
¦ Id_No ¦ Задействована кнопка No. ¦
¦ Id_Ok ¦ Задействована кнопка Ok. ¦
¦ Id_Retry ¦ Задействована кнопка Retry. ¦
¦ Id_Yes ¦ Задействована кнопка Yes. ¦
L-----------------+------------------------------

См. также: Константы mb_XXXX, MessageBox.

Переменная InactiveTitle модуль WinCrt
-----------------------------------------------------------------

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

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

Описание: cons InactiveTitle: PChar = '(Inactive %s)';

Примечания: Строка, используемая в качестве параметра управ-
ления форматом вызова функции Windows WVSPrintF. Спецификатор %s,
если он присутствует, указывает, куда нужно включить строку заго-
ловка окна.



B.Pascal 7 & Objects/PG - 60 -


Переменная InOutRes модуль System
-----------------------------------------------------------------

Назначение: Сохраняет значение, возвращаемое следующим вызо-
вом IOResult.

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

Описание: var InOutRes: Integer;

Примечания: InOutRes используется встроенными функциями вво-
да-вывода.

См. также: IOResult.

Переменная Input модуль System
-----------------------------------------------------------------

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

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

Описание: var Input: Text;

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

Множество стандартных процедур и функций работы с файлами
Borland Pascal позволяют опускать файловый параметр. В этом слу-
чае процедура или функция будет работать со стандартной перемен-
ной Input или Output. Например, Read(X) соответствует Read(Input,
X) а Write(X) соответствует Write(Output, X). Следующие стандарт-
ные процедуры и функции работы с файлами, когда параметр файла не
задан, работают с файлом Input:

Eof Readln
Eoln SeekEof
Read SeekEoln

Так как Windows не поддерживает прямой ориентированный на
текст ввод и вывод, в приложении Windows файлы Input и Output по
умолчанию не присваиваются, и любая попытка чтения или записи в
них даст ошибку. Однако, если прикладная программа использует мо-
дуль WinCrt, то Input и Output будут ссылаться на прокручиваемое
текстовое окно. Подробнее вопросы ввода-вывода освещаются в Главе
14 ("Ввод и вывод") "Руководства по языку".

См. также: Output.


B.Pascal 7 & Objects/PG - 61 -

Константы выравнивания модуль Graph
-----------------------------------------------------------------

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

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

Примечания:

-----------------T--------------¬
¦ Константа ¦ Значение ¦
+----------------+--------------+
¦ LeftText ¦ 0 (слева) ¦
¦ CenterText ¦ 1 (по центру)¦
¦ RightText ¦ 2 (справа) ¦
¦ BottomText ¦ 0 (внизу) ¦
¦ CenterText ¦ 1 (по центру)¦
¦ TopText ¦ 2 (вверху) ¦
L----------------+---------------

См. также: SetTextJustify.

Переменная LastMode модуль Crt
-----------------------------------------------------------------

Назначение: Сохраняет текущий видеорежим при каждом вызове
TexMode.

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

Описание: var LastMode: Word;

Примечания: В начале выполнения программы LastMode инициали-
зирует значением видеорежима, который будет затем активным.

См. также: TextMode.



B.Pascal 7 & Objects/PG - 62 -


Константы стиля линии модуль Graph
-----------------------------------------------------------------

Назначение: Определяет стиль и толщину линии; используется с
GetLineSettings и SetLineStyle.

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

Примечания:

-----------------T--------------------------¬
¦ Константа ¦ Значение ¦
+----------------+--------------------------+
¦ SolidLn ¦ 0 (непрерывная) ¦
¦ DottedLn ¦ 1 (линия из точек) ¦
¦ CenterLn ¦ 2 (точки и тире) ¦
¦ DashedLn ¦ 0 (пунктирная) ¦
¦ UserBitLn ¦ 1 (стиль, заданный ¦
¦ ¦ пользователем) ¦
¦ NormWidth ¦ 1 (обычная толщина) ¦
¦ ThickWidth ¦ 3 (жирная линия) ¦
L----------------+---------------------------

См. также: LineSettingsType.



B.Pascal 7 & Objects/PG - 63 -


Тип LineSettingsType модуль Graph
-----------------------------------------------------------------

Назначение: Запись, определяющая стиль, образец и толщину
линии.

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

Описание:

type
LineSettingsType = record
LineStyle: Word;
Pattern: Word;
Thickness: Word;
end;

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

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



B.Pascal 7 & Objects/PG - 64 -


Переменная Lst модуль Printer
-----------------------------------------------------------------

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

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

Описание: var Lst: Text;

Примечания: Используйте Lst для передачи вывода вашей прог-
раммы на принтер.

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

Пример:

program PrintIt;
var
Lst: Text; { описать Lst как переменную типа тексто-
вого файла }
begin
Assing(Lst, 'LPT1'); { присвоить текстовый файл стандарт-
ному выводу }
Rewrite(Lst); { для пересылки текстового файла на принтер
вызвать Rewrite }
Writeln(Lst, 'Hello, printer.');
Close(Lst) { закрыть текстовый файл }
end.

Константы MaxColors модуль Craph
-----------------------------------------------------------------

Назначение: Определяют максимальное число цветов.

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

Описание: const MaxColors = 15;

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



B.Pascal 7 & Objects/PG - 65 -


Константы mb_XXXX модуль WinAPI
-----------------------------------------------------------------

Назначение: Флаги mb_XXXX задают характеристики окна сообще-
ния, создаваемого MessageBox.

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

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

----------------------T---------------------------------------¬
¦ Константа ¦ Смысл ¦
+---------------------+---------------------------------------+
¦ mb_AbortRetryIgnore ¦ Окно сообщения содержит командные¦
¦ ¦ кнопки Abort, Retry и Ignore. ¦
+---------------------+---------------------------------------+
¦ mb_ApplModal ¦ Перед продолжением работы в порождаю-¦
¦ ¦ щем окне пользователь должен ответить¦
¦ ¦ на это окно. Однако, пользователь мо-¦
¦ ¦ жет работать в окнах других приложе-¦
¦ ¦ ний. Если не задано mb_SystemModel или¦
¦ ¦ mb_TaskModel, это окно используется по¦
¦ ¦ умолчанию. ¦
+---------------------+---------------------------------------+
¦ mb_DefButton1 ¦ По умолчанию используется первая ко-¦
¦ ¦ мандная кнопка. Это всегда имеет мес-¦
¦ ¦ то, если не определены md_DefButton2¦
¦ ¦ или mb_DefButton3. ¦
+---------------------+---------------------------------------+
¦ mb_DefButton2 ¦ По умолчанию используется вторая ко-¦
¦ ¦ мандная кнопка. ¦
+---------------------+---------------------------------------+
¦ mb_DefButton2 ¦ По умолчанию используется третья ко-¦
¦ ¦ мандная кнопка. ¦
+---------------------+---------------------------------------+
¦ mb_IconAsterisk ¦ То же, что mb_IconInformation. ¦
+---------------------+---------------------------------------+
¦ mb_IconExclamation ¦ Окно сообщений включает в себя пикто-¦
¦ ¦ грамму с восклицательным знаком. ¦
+---------------------+---------------------------------------+
¦ mb_IconHand ¦ То же, что и mb_IconStop. ¦
+---------------------+---------------------------------------+
¦ mb_IconQuestion ¦ Окно сообщений включает в себя пикто-¦
¦ ¦ грамму с вопросительным знаком. ¦
+---------------------+---------------------------------------+
¦ mb_IconStop ¦ Окно сообщений включает в себя пикто-¦
¦ ¦ грамму со знаком "стоп". ¦
+---------------------+---------------------------------------+
¦ mb_OK ¦ Окно сообщений содержит только команд-¦
¦ ¦ ную кнопку OK. ¦
+---------------------+---------------------------------------+
¦ mb_OKCancel ¦ Окно сообщений содержит только команд-¦

B.Pascal 7 & Objects/PG - 66 -

¦ ¦ ные кнопки OK и Cancel. ¦
+---------------------+---------------------------------------+
¦ mb_RetryCancel ¦ Окно сообщений содержит только команд-¦
¦ ¦ ные кнопки Retry и Cancel. ¦
+---------------------+---------------------------------------+
¦ mb_SystemModal ¦ Перед продолжением работы приложения¦
¦ ¦ пользователь должен ответить на данное¦
¦ ¦ окно сообщения. Если приложение не¦
¦ ¦ специфицирует mb_IconHand, окно сооб-¦
¦ ¦ щения не становится модальным, пока не¦
¦ ¦ создается. Используйте это окно сооб-¦
¦ ¦ щения для предупреждения пользовате-¦
¦ ¦ лей о потенциально опасных ситуациях¦
¦ ¦ (например, нехватке памяти). ¦
+---------------------+---------------------------------------+
¦ mb_TaskModal ¦ То же, что mb_AppModal, но все окна¦
¦ ¦ верхнего уровня, принадлежащие текущей¦
¦ ¦ задаче, запрещаются, если WndOwner¦
¦ ¦ равно 0. Используйте данный флаг, если¦
¦ ¦ нет доступного описателя порождающего¦
¦ ¦ окна, и вызывающей прикладной програм-¦
¦ ¦ ме или библиотеке нужно предотвратить¦
¦ ¦ ввод в другие окна текущей прикладной¦
¦ ¦ задачи без приостановки других прик-¦
¦ ¦ ладных задач. ¦
+---------------------+---------------------------------------+
¦ mb_YesNo ¦ Окно сообщений содержит командные¦
¦ ¦ кнопки Yes (Да) и No (Нет). ¦
+---------------------+---------------------------------------+
¦ mb_YesNoCancel ¦ Окно сообщений содержит командные¦
¦ ¦ кнопки Yes (Да), No (Нет) и Cancel¦
¦ ¦ (Отмена). ¦
L---------------------+----------------------------------------

См. также: константы Id_XXXX, MessageBox.



B.Pascal 7 & Objects/PG - 67 -


Переменная Origin модуль WinCrt
-----------------------------------------------------------------

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

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

Описание: const Origin: TPoint = (X: 0; Y: 0);

Примечания: Origin - это переменная, доступная только для
чтения; не присваивайте ей значения.



B.Pascal 7 & Objects/PG - 68 -


Переменная Output модуль System
-----------------------------------------------------------------

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

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

Описание: var Output: Text;

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

Ряд стандартных процедур и функций работы с файлами Borland
Pascal позволяют опускать параметр файловой переменной. В этом
случае процедура или функция будет работать с переменной Input и
Output. Например, Read(X) соответствует Read(Input, X), а
Write(X) соответствует Write(Output, X). Следующие стандартные
процедуры и функции при отсутствии файлового параметра работают с
файлом Output:

Write, Writeln

Так как Windows не поддерживает непосредственно ориентиро-
ванный на текст ввод и вывод, в приложении Windows файлы Input и
Output по умолчанию не присваиваются, и любые попытки чтения или
записи в них дадут ошибку ввода-вывода. Однако, если приложение
использует модуль WinCrt, Input и Output будут ссылаться на прок-
ручиваемое текстовое окно.

Подробнее вопросы ввода-вывода в DOS и Windows освещаются в
Главе 14 ("Ввод и вывод") "Руководства по языку".

См. также: Input.



B.Pascal 7 & Objects/PG - 69 -


Переменная OvrCodeList модуль Overlay
-----------------------------------------------------------------

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

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

Описание: var OvrCodeList: Word;

Примечания: Переменная OvrCodeList инициализируется на этапе
компоновки компоновщиком Borland Pascal и предназначена для внут-
реннего использования администратором оверлеев. Если программа
не содержит оверлеи, она равна 0, и отлична от 0 в противном слу-
чае. Модифицировать эту переменную не следует.

Переменная OvrDebugPtr модуль Overlay
-----------------------------------------------------------------

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

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

Описание: var OvrDebugPtr: Pointer;

Примечания: Переменная OvrDebugPtr используется встроенным
отладчиком Borland Pascal для отладки оверлейных программ. Моди-
фицировать эту переменную не следует.



B.Pascal 7 & Objects/PG - 70 -


Переменная OvrDosHandle модуль System
-----------------------------------------------------------------

Назначение: Описатель оверлейного файла.

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

Описание: var OvrDosHandle: Word;

Примечания: Переменная OvrDosHandle содержит описатель овер-
лейного файла программы. Она инициализируется подпрограммой
OvrInit модуля Overlay. Нулевое значение переменной OvrDosHandle
указывает, что оверлейный файл в данный момент не открыт. Модифи-
цировать эту переменную не следует.

См. также: OvrInit.

Переменная OvrEmsHandle модуль System
-----------------------------------------------------------------

Назначение: Описатель оверлея в EMS.

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

Описание: var OvrEmsHandle: Word;

Примечания: Переменная OvrEmsHandle содержит описатель блока
дополнительной памяти, содержащего оверлеи программы. Она инициа-
лизируется подпрограммой OverInitEMS модуля Overlay. Значение
$FFFF переменной OvrEmsHandle указывает, что блок дополнительной
памяти для оверлеев не распределен. Модифицировать эту переменную
не следует.

См. также: OvrInit, OverInitEMS.



B.Pascal 7 & Objects/PG - 71 -


Переменная OvrFileMode модуль Overlay
-----------------------------------------------------------------

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

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

Описание: var OvrFileMode: Byte;

Примечания: По умолчанию переменная OvrFileMode равна 0, что
соответствует доступу только по чтению. Присвоив перед вызовом
OvrInit новое значение этой переменной, вы можете изменить код
доступа. Это может потребоваться, например, для обеспечения сов-
местного доступа в сети. Подробности о кодах доступа вы можете
найти в справочном руководстве программиста по DOS.

См. также: OvrInit.

Переменная OvrHeapEnd модуль System
-----------------------------------------------------------------

Назначение: Конец оверлейного буфера.

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

Описание: var OvrHeapEnd: Word;

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

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



B.Pascal 7 & Objects/PG - 72 -


Переменная OvrHeapOrg модуль System
-----------------------------------------------------------------

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

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

Описание: var OvrHeapOrg: Word;

Примечания: Переменная OvrHeapEnd сохраняет значение адреса
сегмента начала оверлейного буфера. Код запуска библиотеки испол-
няющей системы инициализирует переменные OvrHeapOrg, OvrHeapPtr и
OvrHeapEnd, чтобы они указывали на оверлейный буфер между сегмен-
том стека программы и динамически распределяемой областью. Размер
этого начального оверлейного буфера (в 16-байтовых параграфах)
задается переменной OvrHeapSize и соответствует размеру наиболь-
шего оверлея программы, включая корректировочную информацию для
оверлея.

Присвоив переменным OvrHeapOrg, OvrHeapPtr и OvrHeapEnd но-
вые значения, вы можете переместить в программе оверлейный буфер.
Любое перемещение такого рода должно выполняться перед вызовом
OvrInit или непосредственно после вызова OvrClearBuf (это обеспе-
чивает, что оверлейный буфер пуст). Чтобы переместить оверлейный
буфер, присвойте адрес сегмента начала буфера переменным
OvrHeapOrg и OvrHeapPrt и присвойте адрес сегмента концу буфера
OvrHeapEnd. Нужно обеспечить, чтобы размер буфера (вычисляемый
как разность OvrHeapEnd - OvrHeapOrg) был больше или равен
OvrHeapSize.

См. также: OverHeapEnd, OvrHeapPtr, OvrSetBuf.



B.Pascal 7 & Objects/PG - 73 -


Переменная OvrHeapPtr модуль System
-----------------------------------------------------------------

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

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

Описание: var OvrHeapPtr: Word;

Примечания: Переменная OvrHeapPtr предназначена для внутрен-
него использования администратором оверлеев. Кроме задания в опи-
сании OvrHeapOrg, модифицировать значение OvrHeapPrt не следует.

См. также: OverHeapOrg.

Переменная OvrHeapSize модуль System
-----------------------------------------------------------------

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

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

Описание: var OvrHeapSize: Word;

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

См. также: OverHeapOrg.



B.Pascal 7 & Objects/PG - 74 -


Переменная OvrLoadCount модуль Overlay
-----------------------------------------------------------------

Назначение: Счетчик загрузки оверлея.

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

Описание: Var OvrLoadCount: Word;

Примечания: Начальное значение OvrLoadCount равно 0. Адми-
нистратор оверлеев увеличивает это значение при каждой загрузке
оверлеев. Проверяя значения OvrTrapCount и OvrLoadCount в окне
Watch отладчика во время идентичных прогонов своей прикладной
программы, вы можете отслеживать влияние различного размера проб-
ной области (устанавливаемого с помощью OvrSetRetry) и найти для
своей прикладной программы ее оптимальный размер.

См. также: OvrTrapCount.

Переменная OvrLoadList модуль System
-----------------------------------------------------------------

Назначение: Список загруженных оверлеев.

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

Описание: Var OvrLoadList: Word;

Примечания: Данная переменная предназначена для внутреннего
использования администратором оверлеев. Изменять ее значение не
следует.



B.Pascal 7 & Objects/PG - 75 -


Переменная OvrReadBuf модуль Overlay
-----------------------------------------------------------------

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

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

Описание:

type OvrReadFunc = function(OvrSeg: Word): Integer;
var OvrReadBuf: OvrReadFunc;

Примечания: OvrLoadList позволяет вам перехватывать операции
загрузки оверлеев и реализовать, например, обработку ошибок или
проверку наличия сменного диска. Когда администратору оверлеев
требуется считать оверлей, он вызывает функцию, адрес которой
хранится в OvrReadBuf. Если эта функция возвращает 0, администра-
тор оверлеев предполагает, что операция выполнена успешно. Если
результат ненулевой, то генерируется ошибка 209 этапа выполнения.
Параметр OvrSeg указывает на загрузку оверлея, но доступ к данной
информации вам не требуется. Подробности по установке своей собс-
твенной функции считывания оверлея вы можете найти в Главе 20
("Использование оверлеев") "Руководства по языку".

Переменная OvrResult модуль Overlay
-----------------------------------------------------------------

Назначение: Код результата последней процедуры вызова овер-
лея.

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

Описание: var OvrResult: Integer;

Примечания: Перед возвратом управления каждая процедура мо-
дуля Overlay записывает код результата в переменную OvrResult.
Возможные коды ovrXXXX вы найдете ниже. В общем случае нулевое
значение указывает на успешное выполнение. Переменная OvrResult
напоминает стандартную функцию IOResult, но после обращения к ней
данная переменная не устанавливается в 0. Таким образом, перед
проверкой вам не нужно копировать эту переменную в локальные пе-
ременные.

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



B.Pascal 7 & Objects/PG - 76 -


Переменная OvrTrapCount модуль Overlay
-----------------------------------------------------------------

Назначение: Счетчик перехвата вызова оверлея.

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

Описание: var OvrTrapCount: Word;

Примечания: Каждый раз, когда оверлейная подпрограмма перех-
ватывается администратором оверлеев (из-за того, что оверлей не
находится в памяти или находится в пробной области), значение пе-
ременной OvrTrapCount увеличивается. Начальное значение этой пе-
ременной равно 0.

См. также OverLoadCount.

Константы ovrXXXX модуль Overlay
-----------------------------------------------------------------

Назначение: Коды возврата, записываемые в переменную
OvrResult.

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

Примечания:

-----------------T--------T---------------------------------¬
¦ Константа ¦Значение¦ Смысл ¦
+----------------+--------+---------------------------------+
¦ ovrOk ¦ 0 ¦ Успешное выполнение. ¦
¦ ovrError ¦ -1 ¦ Ошибка администратора оверлеев. ¦
¦ ovrNotFound ¦ -2 ¦ Не найден файл оверлея. ¦
¦ ovrNoMemory ¦ -3 ¦ Не хватает памяти для оверлейно-¦
¦ ¦ ¦ го буфера. ¦
¦ ovrIOError ¦ -4 ¦ Ошибка ввода-вывода оверлейного¦
¦ ¦ ¦ файла. ¦
¦ ovrNoEMSDriver ¦ -5 ¦ Драйвер EMS не установлен. ¦
¦ ovrNoEMSMemory ¦ -6 ¦ Не хватает памяти EMS. ¦
L----------------+--------+----------------------------------



B.Pascal 7 & Objects/PG - 77 -


Тип PaletteType модуль Graph
-----------------------------------------------------------------

Назначение: Запись, определяющая размер и цвета палитры; ис-
пользуется в GetPalette, GetDefaultPalette и SetAllPalette.

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

Описание: PaletteType определяется следующим образом:

const
MaxColors = 15;
type
PaletteType = record
Size: Byte;
Colors: array[0..MaxColors] of Shortint;
end;

Поле размера Size указывает на число цветов в палитре для
текущего драйвера и текущего режима. Colors содержит фактические
цвета 0..Size - 1.

Тип PointType модуль Graph
-----------------------------------------------------------------

Назначение: Этот тип определен для вашего удобства. Оба поля
имеют тип Integer, а не Word.

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

Описание:

type
PointType = Record
X. Y: Integer;
end;



B.Pascal 7 & Objects/PG - 78 -


Переменная PrefixSeg модуль System
-----------------------------------------------------------------

Назначение: Содержит селектор для защищенного режима или
сегмент для реального режима префикса программного сегмента
(PSP), создаваемого DOS при выполнении прикладной программы.

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

Описание: var PrefixSeg: Word;

Примечания: Полное описание префикса программного сегмента
вы можете найти в руководствах по DOS.

Переменная RandSeed модуль System
-----------------------------------------------------------------

Назначение: Сохраняет начальное значение встроенного генера-
тора случайных чисел.

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

Описание: var RandSeed: Longint;

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

См. также: Random, Randomize.



B.Pascal 7 & Objects/PG - 79 -


Переменная ReadModeRegs модуль System
-----------------------------------------------------------------

Назначение: Структура регистров реального режима, используе-
мая в вызовах функции DPMI.

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

Описание: var RealModeRegs: array[0..49] of Byte;

Примечания: Библиотека исполняющей системы использует пере-
менную RealModeRegs в сервере DPVI. В частности, она используется
для реализации вызова реального режима для прерываний 23H и 24H.
Обращаться к данной переменной вам не требуется.

Тип Registers модуль Dos
-----------------------------------------------------------------

Назначение: Параметр-переменную типа Registers используют
процедуры Intr и MsDos. Она специфицирует содержимое входных и
выходных регистров программного прерывания.

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

Описание:

type
Registers = record
case Inrteger of
0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, DL, DH, CL, CH, DL, DH: Byte);
end;

Примечания: Переменную типа Registers используют процедуры
Intr и MsDos. Обратите внимание на применение для отображения
8-битовых регистров в старшие слова соответствующих 16-битовый
регистров вариантной записи.

См. также: Intr, MsDos, TRegisters.



B.Pascal 7 & Objects/PG - 80 -


Переменные SaveIntXX модуль System
-----------------------------------------------------------------

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

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

Примечания: В версии модуля System для реального режима DOS
описаны следующие переменные SaveIntXX:

-----------------T----------T-----------------------------------¬
¦ Имя ¦ Тип ¦ Описание ¦
+----------------+----------+-----------------------------------+
¦ SaveInt00 ¦ Pointer ¦ { сохраненное прерывание $00 } ¦
¦ SaveInt02 ¦ Pointer ¦ { сохраненное прерывание $02 } ¦
¦ SaveInt1B ¦ Pointer ¦ { сохраненное прерывание $1B } ¦
¦ SaveInt21 ¦ Pointer ¦ { сохраненное прерывание $21 } ¦
¦ SaveInt23 ¦ Pointer ¦ { сохраненное прерывание $23 } ¦
¦ SaveInt24 ¦ Pointer ¦ { сохраненное прерывание $24 } ¦
¦ SaveInt34 ¦ Pointer ¦ { сохраненное прерывание $34 } ¦
¦ SaveInt35 ¦ Pointer ¦ { сохраненное прерывание $35 } ¦
¦ SaveInt36 ¦ Pointer ¦ { сохраненное прерывание $36 } ¦
¦ SaveInt37 ¦ Pointer ¦ { сохраненное прерывание $37 } ¦
¦ SaveInt38 ¦ Pointer ¦ { сохраненное прерывание $38 } ¦
¦ SaveInt39 ¦ Pointer ¦ { сохраненное прерывание $39 } ¦
¦ SaveInt3A ¦ Pointer ¦ { сохраненное прерывание $3A } ¦
¦ SaveInt3B ¦ Pointer ¦ { сохраненное прерывание $3B } ¦
¦ SaveInt3C ¦ Pointer ¦ { сохраненное прерывание $3C } ¦
¦ SaveInt3D ¦ Pointer ¦ { сохраненное прерывание $3D } ¦
¦ SaveInt3E ¦ Pointer ¦ { сохраненное прерывание $3E } ¦
¦ SaveInt3F ¦ Pointer ¦ { сохраненное прерывание $3F } ¦
¦ SaveInt75 ¦ Pointer ¦ { сохраненное прерывание $75 } ¦
L----------------+----------+------------------------------------


B.Pascal 7 & Objects/PG - 81 -


В версии модуля System для защищенного режима DOS описаны
следующие переменные SaveIntXX:

-----------------T----------T-----------------------------------¬
¦ Имя ¦ Тип ¦ Описание ¦
+----------------+----------+-----------------------------------+
¦ SaveInt02 ¦ Pointer ¦ { сохраненное прерывание $02 } ¦
¦ SaveInt0C ¦ Pointer ¦ { сохраненная исключительная ¦
¦ ¦ ¦ ситуация $0C } ¦
¦ SaveInt0D ¦ Pointer ¦ { сохраненная исключительная ¦
¦ ¦ ¦ ситуация $0D } ¦
¦ SaveInt1B ¦ Pointer ¦ { сохраненное прерывание $1B } ¦
¦ SaveInt21 ¦ Pointer ¦ { сохраненное прерывание $21 } ¦
¦ SaveInt23 ¦ Pointer ¦ { сохраненное прерывание реального¦
¦ ¦ ¦ режима $21 } ¦
¦ SaveInt24 ¦ Pointer ¦ { сохраненное прерывание реального¦
¦ ¦ ¦ режима $24 } ¦
¦ SaveInt34 ¦ Pointer ¦ { сохраненное прерывание $34 } ¦
¦ SaveInt35 ¦ Pointer ¦ { сохраненное прерывание $35 } ¦
¦ SaveInt36 ¦ Pointer ¦ { сохраненное прерывание $36 } ¦
¦ SaveInt37 ¦ Pointer ¦ { сохраненное прерывание $37 } ¦
¦ SaveInt38 ¦ Pointer ¦ { сохраненное прерывание $38 } ¦
¦ SaveInt39 ¦ Pointer ¦ { сохраненное прерывание $39 } ¦
¦ SaveInt3A ¦ Pointer ¦ { сохраненное прерывание $3A } ¦
¦ SaveInt3B ¦ Pointer ¦ { сохраненное прерывание $3B } ¦
¦ SaveInt3C ¦ Pointer ¦ { сохраненное прерывание $3C } ¦
¦ SaveInt3D ¦ Pointer ¦ { сохраненное прерывание $3D } ¦
¦ SaveInt3E ¦ Pointer ¦ { сохраненное прерывание $3E } ¦
¦ SaveInt3F ¦ Pointer ¦ { сохраненное прерывание $3F } ¦
¦ SaveInt75 ¦ Pointer ¦ { сохраненное прерывание $75 } ¦
L----------------+----------+------------------------------------

В модуле System и других библиотечных модулях исполняющей
системы используется несколько векторов прерываний. Код инициали-
зации библиотеки исполняющей системы в модуле System перед уста-
новкой какой-либо подпрограммы обработки прерываний сохраняет
старые векторы прерываний в переменных SaveIntXX. Аналогично, код
завершения библиотеки исполняющей системы перед возвратом в опе-
рационную системы с помощью переменных SaveIntXX восстанавливает
векторы прерываний.

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

В защищенном режиме DOS в некоторых из переменных SaveIntXX
вместо векторов прерываний защищенного режима сохраняются векторы
прерываний реального режима или векторов исключительных ситуаций
защищенного режима. Подпрограммы GetIntVec и SetIntVec в модулях

B.Pascal 7 & Objects/PG - 82 -

Dos и WinDos могут использоваться только для работы с векторами
прерываний защищенного режима. Чтобы работать с векторами реаль-
ного режима и векторами исключительных ситуаций защищенного режи-
ма, вы должны использовать функциональные вызовы DPMI. Подробнос-
ти вы можете узнать в Спецификации защищенного режима DOS Intel
0.9.

См. также: Exec, SwapVectors.

Типизированные константы ScreenSize модуль WinCrt
-----------------------------------------------------------------

Назначение: Определяют ширину и высоту (в символах) вирту-
ального экрана в окне CRT.

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

Описание: const ScreenSize: TPoint = (X: 80; Y: 25);

Примечания: По умолчанию экран имеет размер 80 столбцов на
25 строк. Присвоив координатам X и Y ScreenSize перед созданием
окна CRT другие значения, вы можете изменить размер виртуального
экрана. Произведение значения ScreenSize.X на ScreenSize.Y не
должно превышать 65520.



B.Pascal 7 & Objects/PG - 83 -


Тип SearchRec модуль Dos
-----------------------------------------------------------------

Назначение: Процедуры FindFirst и FindNext используют пере-
менные типа SearchRec для просмотра каталогов.

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

Описание:

type
SearchRec = record
Fill: array[1..21] of Byte;
Attr: Byte;
Time: Longint;
Size: Longint;
Name: string[12];
end;

Информация о каждом файле, найденном в одной из этих проце-
дур, записывается в SearchRec. Поле Attr содержит атрибуты файла
(построенные из констант-атрибутов), Time содержит упакованную
дату и время (для распаковки этого значения используется
UnpackTime), Size содержит размер в байтах, а Name содержит его
имя. Поле Fill резервируется DOS и не должно модифицироваться.

Переменная Seg0040 модуль System
-----------------------------------------------------------------

Назначение: Селектор сегмента $0040.

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

Описание: var Seg0040: Word;

Примечания: Seg0040 содержит селектор, который можно исполь-
зовать для доступа к рабочему пространству ROM BIOS по адресу
сегмента $0040. В реальном режиме Seg0040 всегда содержит значе-
ние $0040, но в защищенном режиме фактическое значение может из-
меняться.

См. также: SegA000, SegB000, SegB800.



B.Pascal 7 & Objects/PG - 84 -


Переменная SegA000 модуль System
-----------------------------------------------------------------

Назначение: Селектор сегмента $A000.

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

Описание: var SegA000: Word;

Примечания: SegA000 содержит селектор, который можно исполь-
зовать для доступа к рабочему пространству ROM BIOS по адресу
сегмента $A000. В реальном режиме SegA000 всегда содержит значе-
ние $A000, но в защищенном режиме фактическое значение может из-
меняться.

См. также: Seg0040, SegB000, SegB800.

Переменная SegB000 модуль System
-----------------------------------------------------------------

Назначение: Селектор сегмента $B000.

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

Описание: var SegB000: Word;

Примечания: SegB000 содержит селектор, который можно исполь-
зовать для доступа к рабочему пространству ROM BIOS по адресу
сегмента $B000. В реальном режиме SegB000 всегда содержит значе-
ние $B000, но в защищенном режиме фактическое значение может из-
меняться.

См. также: Seg0040, SegB000, SegB800.



B.Pascal 7 & Objects/PG - 85 -


Переменная SegB800 модуль System
-----------------------------------------------------------------

Назначение: Селектор сегмента $B800.

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

Описание: var SegB900: Word;

Примечания: SegB800 содержит селектор, который можно исполь-
зовать для доступа к рабочему пространству ROM BIOS по адресу
сегмента $B800. В реальном режиме SegB800 всегда содержит значе-
ние $B800, но в защищенном режиме фактическое значение может из-
меняться.

См. также: Seg0040, SegB000, SegB800.

Переменная SelectorInc модуль System
-----------------------------------------------------------------

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

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

Описание: var SelectorInc: Word;

Примечания: SelectorInc содержит значение, которое должно
добавляться или вычитаться из селекторной части указателя для
увеличения или уменьшения указателя на 64К. В реальном режиме
SelectorInc всегда содержит значение $1000, но в защищенном режи-
ме это значение может быть другим. Более подробно о SelectorInt
рассказывается в Главе 17 ("Программирование в защищенном режиме
DOS") в "Руководстве по языку".



B.Pascal 7 & Objects/PG - 86 -


Переменная StackLimit модуль System
-----------------------------------------------------------------

Назначение: Содержит смещение конца стека ("дна") в кадре
стека.

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

Описание: var StackLimit: Word;

Примечания: StackLimit возвращает наименьшее значение, кото-
рое может содержать регистр SP перед наступлением ситуации пере-
полнения стека.

См. также: SPtr.

Тип TDateTime модуль WinDos
-----------------------------------------------------------------

Назначение: Переменные типа TDateTime используются в проце-
дурах UnpakcTime и PackTime для проверки и построения 4-байтовых
упакованных значений даты и времени для процедур GetFTime,
SetFTime, FindFirst и FindNext.

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

Описание:

type
TDAteTie = record
Year,Month,Day,Hour,Min,Sec: Word;
end;

Примечания: Значения имеют следующие допустимые диапазоны:
Year (год) - 1980..2099, Month (месяц) - 1..12, Day (число)
1..31, Hour (час) 0..23, Min (минуты) 0..59 и Sec (секунды)
0..59.

См. также: PackTime.



B.Pascal 7 & Objects/PG - 87 -


Переменная Test8086 модуль System
-----------------------------------------------------------------

Назначение: Идентифицирует тип процессора 80x86, который со-
держит система.

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

Описание: var Test8086: Byte;

Примечания: Код инициализации и запуска библиотеки исполняю-
щей системы содержит логику обнаружения, которая автоматически
определяет, какой тип процессора 80x86 содержит система. Резуль-
тат распознавания ЦП записывается в переменную Test8086 в виде
одного из следующих значений:

------------T----------------------------¬
¦ Значение ¦ Определение ¦
+-----------+----------------------------+
¦ 0 ¦ Процессор 8086. ¦
¦ 1 ¦ Процессор 80286. ¦
¦ 2 ¦ Процессор 80386 или старше.¦
L-----------+-----------------------------

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

См. также: Test8087.



B.Pascal 7 & Objects/PG - 88 -


Переменная Test8087 модуль System
-----------------------------------------------------------------

Назначение: Идентифицирует тип сопроцессора 80x87, который
содержит система.

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

Описание: var Test8086: Byte;

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

------------T------------------------------¬
¦ Значение ¦ Определение ¦
+-----------+------------------------------+
¦ 0 ¦ Сопроцессор не обнаружен. ¦
¦ 1 ¦ Обнаружен сопроцессор 8087. ¦
¦ 2 ¦ Обнаружен сопроцессор 80287. ¦
¦ 3 ¦ Обнаружен сопроцессор 80387¦
¦ ¦ или старше. ¦
L-----------+-------------------------------

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

Дополнительную информацию вы можете найти в Главе 15 ("Ис-
пользование сопроцессора 80x87") в "Руководстве по языку".

Пример: Существование сопроцессора проверяет следующая прог-
рамма:

program Test87;
{$N+} { разрешить инструкции сопроцессора 80x87 }
{$E+} { включить эмулирующую библиотеку }
var
X : Single;
begin
X := 0; { принудительная генерация инструкций
сопроцессора 80x87 }
case Test8087 of
0: Writeln ('Арифметический сопроцессор не обнаружен.');
1: Writeln ('Сопроцессор 8087 обнаружен.');
end;
end.


B.Pascal 7 & Objects/PG - 89 -


Переменная TextAttr модуль Crt
-----------------------------------------------------------------

Назначение: Сохраняет текущий выбранный текстовый атрибут.

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

Описание: var TextAttr: Byte;

Примечания: Хотя текстовые атрибуты обычно устанавливаются с
помощью вызовов TextColor и TextBackground, вы можете также ис-
пользовать их непосредственно, записывая в TextAttr значение. Ин-
формация о цвете кодируется в TextAttr следующим образом:

bit -------> 7 6 5 4 3 2 1 0
----T---T---T---T---T---T---T---¬
¦ B ¦ b ¦ b ¦ b ¦ f ¦ f ¦ f ¦ f ¦
L---+---+---+---+---+---+---+----

где ffff - это 4-битовый основной цвет, bbbb - 3-битовый фоновый
цвет, а B - бит мерцания. Если для создания значений TextAttr вы
используете константы цветов, то фоновый цвет может выбираться
только из первых 8 цветов и для получения корректных битовых по-
зиций должен умножаться на 16. Например, при следующем присваива-
нии выбираются мерцающие желтые символы на голубом фоне:

TextAttr := Yellow + Blue * 16 + Blink;

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



B.Pascal 7 & Objects/PG - 90 -


Константы цветов текста модуль Crt
-----------------------------------------------------------------

Назначение: Представляют цвета текста.

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

Примечания:

-----------------T------------------------------¬
¦ Константа ¦ Значение ¦
+----------------+------------------------------+
¦ Black ¦ 0 ( черный ) ¦
¦ Blue ¦ 1 ( синий ) ¦
¦ Green ¦ 2 ( зеленый ) ¦
¦ Cyan ¦ 3 ( бирюзовый ) ¦
¦ Red ¦ 4 ( красный ) ¦
¦ Magenta ¦ 5 ( малиновый ) ¦
¦ Brown ¦ 6 ( коричневый ) ¦
¦ LightGray ¦ 7 ( светло-серый ) ¦
¦ DarkGray ¦ 8 ( темно-серый ) ¦
¦ LightBlue ¦ 9 ( светло-синий ) ¦
¦ LightGreen ¦ 10 ( светло-зеленый ) ¦
¦ LightCyan ¦ 11 ( светло-бирюзовый ) ¦
¦ LightRed ¦ 12 ( светло-красный ) ¦
¦ LightMagenta ¦ 13 ( светло-малиновый ) ¦
¦ Yellow ¦ 14 ( желтый ) ¦
¦ White ¦ 15 ( белый ) ¦
¦ Blink ¦ 128 ( мерцание) ¦
L----------------+-------------------------------

Цвета текста представляются значениями от 0 до 15 включи-
тельно; чтобы облегчить идентификацию каждого цвета, вместо чисел
вы можете использовать данные константы. В цветном режиме цвет
каждого символа выбирается из 16 цветов, а фон - из 8 цветов. Фон
каждого символа также можно сделать мерцающим.

См. также: TextAttr, TexBackGround, TextColor.



B.Pascal 7 & Objects/PG - 91 -


Тип TextRec модуль Dos
-----------------------------------------------------------------

Назначение: Определяет внутренний формат текста Borland
Pascal.

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

Описание:

type
TextBut = array[0..127] of Char;
TextRec = record
Handle: Word;
Mode: Word;
BufSize: Word;
Private: Word;
Bufpos: Word;
BufEnd: Word;
BufPtr: ^TextBuf;
OpenFunc: Pointer;
InOutFunc: Pointer;
FlushFunc: Pointer;
CloseFunc: Pointer;
UserData: array[1..16] of Byte;
Name: array[0..79] of Char;
Buffer: TextBuf;
end;

Примечания: TextRec - это внутренний формат переменной типа
Text.

См. также: FileRec.



B.Pascal 7 & Objects/PG - 92 -


Тип TextSettingsType модуль Graph
-----------------------------------------------------------------

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

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

Описание:

type
TextSettingsType = record
Font: Word;
Direction: Word;
CharSize: Word;
Horiz: Word;
Vert: Word;
end;

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

Тип TFarProc модуль WinAPI
-----------------------------------------------------------------

Назначение: Тип указателя на процедуру.

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

Описание: type TFarProc = Pointer;

Примечания: Тип TFarProc используется в подпрограммах
GetProcAddress и GlobalNotify для представления указателя на про-
цедуру или функцию.



B.Pascal 7 & Objects/PG - 93 -


Тип TFileRec модуль WinDos
-----------------------------------------------------------------

Назначение: Определяет запись, используемую для типизирован-
ных и нетипизированных файлов.

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

Описание:

type
TFileRec = record
Handle: Word;
Mode: Word;
RecSize: Word;
Private: array[1..26] of Byte;
UserData: array[1..16] of Byte;
Name: array[0..79] of Char;
end;

Примечания: TFileRec - это определение записи, предназначен-
ной для внутреннего использования в Borland Pascal, а также опи-
санной в модуле Dos. Подробности вы можете найти в Главе 21
("Внутренние форматы данных") в "Руководстве по языку".

Тип THandle модуль WinAPI
-----------------------------------------------------------------

Назначение: Генерирует тип описателя.

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

Описание: type THandle = Word;

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



B.Pascal 7 & Objects/PG - 94 -


Тип TRegisters модуль WinDos
-----------------------------------------------------------------

Назначение: Задает содержимое регистров ввода и вывода прог-
раммного прерывания.

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

Описание:

type
TRegisters = record
case Integer of
0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: Word);
1: (Al, AH, BL, BH, CL, CH, DL, DH: Byte);
end;

Примечания: Переменные типа TRegisters используются в подп-
рограммах Intr и MsDos. Обратите внимание на применение вариант-
ной записи для отображения 8-битовых регистров в их 16-битовые
эквиваленты.

Тип TSearchRec модуль WinDos
-----------------------------------------------------------------

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

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

Описание:

TSearchRec = record
Fill: array[1..21] of Byte;
Attr: Byte:
Time: Longint;
Size: Longint;
Name: array[0..12] of Char;
end;

Примечание: Информация о каждом файле, найденном в одном из
этих процедур, возвращается в TSearchRec. Поле Attr содержит ат-
рибуты файла (построенные из констант атрибутов файла), поле Time
содержит его упакованную дату и время (для распаковки используйте
подпрограмму UnpackTime), Size содержит его размер в байтах, а
Name - имя. Полу Fill резервируется DOS, не модифицируйте его.

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


B.Pascal 7 & Objects/PG - 95 -

Тип TTextRec модуль WinDos
-----------------------------------------------------------------

Назначение: Определяет внутренний формат переменных типа
Text.

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

Описание:

type
PTextBuf = ^ TTextBuf;
TTextBuf = array[0..127] of Char;

TText = record
Handle: Word;
Mode: Word;
BufSize: Word;
Private: Word;
BufPos: Word;
BufEnd: Word;
BufPtr: PTextBuf;
OpenFunc: Pointer;
InOutFunc: Pointer;
FlushFunc: Pointer;
CloseFunc: Pointer;
UserData: array[1..16] of Byte;
Name: array[0..79] of Char;
Buffer: TTextBuf;
end;

Примечания: TTextRec - это определение записи, предназначен-
ной для внутреннего использования в Borland Pascal и описанной в
модуле WinDos. См. раздел "Внутренние форматы данных" в Главе 21
в "Руководстве по языку".


B.Pascal 7 & Objects/PG - 96 -



Тип ViewPortType модуль Graph
-----------------------------------------------------------------

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

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

Описание:

type
ViewPortType = record
X1, Y1, X2, Y2: Integer;
Clip: Boolean;
end;

Примечания: Точки (X1,Y1) и (X2,Y2) определяют размер актив-
ной области просмотра и задают абсолютные координаты экрана. Clip
- это булевская переменная, управляющая отсечением.

См. также: GetViewSettings.



B.Pascal 7 & Objects/PG - 97 -


Флаги конфигурации wf_XXXX модуль VinAPI
-----------------------------------------------------------------

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

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

Примечания:

------------------T---------------------------------------------¬
¦ Константа ¦ Описание ¦
+-----------------+---------------------------------------------+
¦ wf_PMode ¦ Система работает в защищенном режиме. ¦
¦ wf_CPU286 ¦ Система содержит процессор 80286. ¦
¦ wf_CPU386 ¦ Система содержит процессор 80386. ¦
¦ wf_CPU486 ¦ Система содержит процессор 80486. ¦
¦ wf_Standard ¦ Windows работает в стандартном режиме. ¦
¦ wf_Enchanced ¦ Windows работает в улучшенном режиме. ¦
¦ wf_CPU086 ¦ Система содержит процессор 8086. ¦
¦ wf_CPU186 ¦ Система содержит процессор 80186. ¦
¦ wf_LargeFrame ¦ Конфигурация Windows с большим кадром EMS. ¦
¦ wf_LargeFrame ¦ Конфигурация Windows с малым кадром EMS. ¦
¦ wf_80x86 ¦ Система содержит арифметический сопроцессор.¦
¦ wf_DPMI ¦ Система работает в защищенном режиме DOS. ¦
L-----------------+----------------------------------------------

См. также: GetWinFlags.

Переменные WindMax и WindMin модуль Crt
-----------------------------------------------------------------

Назначение: Содержат координаты экрана текущего окна.

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

Описание: var WindMax, WindMin: Word;

Примечания: Данные переменные устанавливаются вызовом проце-
дуры Window. WindMin определяет верхний левый угол, а WindMax -
нижний правый угол. Координата x сохраняется в младшем байте, а y
- в старшем байте. Например, Lo(WindMin) дает x-координату левого
края, а Hi(WindMax) дает y-координату нижнего края. Верхний левый
угол экрана соответствует (x,y) = (0,0). Однако, для координат,
передаваемых подпрограммам Window и GotoXY, верхним левым углом
является (1,1).

См. также: GotoXY, High, Lo, LoWindow.



B.Pascal 7 & Objects/PG - 98 -


Переменная WindowOrg модуль WinCrt
-----------------------------------------------------------------

Назначение: Определяет начальное расположение окна CRT.

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

Описание: const WindowOrg: TPoint = (X: cw_UseDefault; Y:
cw_UseDefault);

Примечания: Используемое по умолчанию расположение позволяет
Windows выбрать для окна CRT подходящее место. Присвоив перед
созданием окна CRT переменным X и Y новые начальные значения, вы
можете изменить начальное расположение.

Переменная WindowSize модуль WinCrt
-----------------------------------------------------------------

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

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

Описание: const WindowSize: TPoint = (X: cw_UseDefault; Y:
cw_UseDefault);

Примечания: Используемый по умолчанию размер позволяет
Windows выбрать для окна CRT подходящий размер. Присвоив перед
созданием окна CRT переменным X и Y новые начальные значения, вы
можете изменить начальный размер.



B.Pascal 7 & Objects/PG - 99 -


Переменная WindowTitle модуль WinCrt
-----------------------------------------------------------------

Назначение: Определяет заголовок окна CRT.

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

Описание: var WindowTitle: array[0..79] of Char;

Примечания: Используемое по умолчанию значение представляет
собой полный маршрут файла .EXE программы. Записав в WindowTitle
перед созданием окна CRT новое значение, вы можете изменить заго-
ловок.

Пример: StrCopy(WindowTitle, 'Hello Word');



B.Pascal 7 & Objects/PG - 100 -

-------------------------------------------------------------
Процедуры и функции
-----------------------------------------------------------------

Процедура AbortPrn модуль WinPrn
-----------------------------------------------------------------

Назначение: Прекращает печать текста.

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

Описание: procedure AbortPrn(var F: Text);

Примечания: Процедура AbortPrn отбрасывает все ненапечатан-
ные части текста. Не забудьте, однако, закрыть файл. Файл требу-
ется присвоить с помощью AssignPrn или AssignDefPrn.

Пример:

uses WinPrn, WinCrt;

var
Source, Prn: Text;
Name: array[0..80] of Char;
Line: String;
begin { получить имя от пользователя }
Write(' Введите файл для печати:');
Readln(Name);
Assign(Source, Name);
Reset(Source);
AssignDefPrn(Prn) { открыть файл для используемого
по умолчанию принтера }
TitlePrn(Prn, Name);
Rewrite(Prn);
Writeln(' Печать файла:', Name); { печать файла }
while not Eof(Source) do
begin
Readln(Source, Line);
Writeln(Prn, Line);
{ завершить печать, если пользователь нажал ESC }
if KeyPressed and (ReadKey = #27) then
begin
AbortPrn(Prn);
Break;
end;
end;
Close(Source);
Close(Prn);
end;

См. также: AssignDefPrn, AssignPrn, SetPrnFont, TitlePrn.



B.Pascal 7 & Objects/PG - 101 -


Функция Abs модуль System
-----------------------------------------------------------------

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

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

Тип результата: Соответствует типу параметра.

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

Пример:

var
r : real;
i : integer;
begin
r := Abx(-2.3); { 2.3 }
i := Abs(-157); { 157 }



B.Pascal 7 & Objects/PG - 102 -


Функция AccessResource модуль WinApi
-----------------------------------------------------------------

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 103 -


Функция Addr модуль System
-----------------------------------------------------------------

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

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

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

Тип результата: Указатель.

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

См. также: Ofs, Seg, Ptr.

Пример:

var
p : pointer;
begin
p : Addr(p); { указывает теперь сам на себя }
end.



B.Pascal 7 & Objects/PG - 104 -


Функция AllocDStoCSAlias модуль WinApi
-----------------------------------------------------------------

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

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

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

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

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

См. также: FreeSelector.



B.Pascal 7 & Objects/PG - 105 -


Функция AllocSelector модуль WinApi
-----------------------------------------------------------------

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

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

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

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

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

См. также: FreeSelector, ChangeSelector.



B.Pascal 7 & Objects/PG - 106 -


Процедура Append модуль System
-----------------------------------------------------------------

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

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

Описание: procedure Append(var f : text);

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

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

Если в последнем блоке файла размером 128 байт присутствует
символ Ctrl+Z (26 в коде ASСII), то текущая позиция устанавлива-
ется в файле таким образом, что при записи первым в блоке будет
"затираться" символ Ctrl+Z.

Если переменной f было присвоено пустое имя (например,
Assign(f,''), то после обращения к процедуре Appеnd f будет ука-
зывать на стандартный выходной файл (стандартный канал номер 1).
После обращения к Appеnd файл f становится доступным только по
записи и Eоf(f) всегда принимает значение Truе.

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

См. также: Rеsеt, Rеwritе.

Пример:

var f : text;
begin
Assign(f, 'Test.txt');
Rewrite(f); { создать новый файл }
Writeln(f, 'исходный текст');
Close(f); { закрыть файл, сохранить изменения }
Append(f); { добавить текст в конец файла }
Writeln(f,'дополнительный текст');
Close(f); { закрыть файл, сохранить изменения }
end.



B.Pascal 7 & Objects/PG - 107 -


Процедура Arc модуль Graph
-----------------------------------------------------------------

Назначение: Вычерчивает дугу окружности от начального угла
до конечного угла. Точка (x,y) используется, как центр окружнос-
ти.

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

Описание: procedure Arс(Х, Y: Integer; Angle1, Angle2, R:
Word);

Примечания: Рисует дугу окружности с центром (x,y) и радиу-
сом R. Дуга рисуется от начального угла (Angle1) до конечного уг-
ла (Angle2). При этом используется текущий цвет.

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

Начальный угол, равный 0 и конечный угол, равный 360, задают
вычерчивание полной окружности.

Углы для Arc, Ellipce и PieSlice рисуются против часовой
стрелки; угол 0 соответствует 3 часам, 90 градусов - 12 часам и
т.д.

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

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

Пример:

uses Graph:
var
Dg, Gm: Integer;
Radius: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
for Radius := 1 to 5 do
Arc(100, 100, 0, 90, Radius * 10);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 108 -


Функция ArcTan модуль System
-----------------------------------------------------------------

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

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

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

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

Пример:

var
r : real;
begin
r := ArcTan(Pi);
end;

Процедура Assign модуль System
-----------------------------------------------------------------

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

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

Описание: procedure Assign(var f; Name);

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

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

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

Диск:\имя_кат\имя_кат\...\имя_кат\имя_файла

Если маршрут начинается с обратной косой черты, то поиск на-
чинается в корневом каталоге, в противном случае он начинается в
текущем каталоге. "Диск" представляет собой идентификатор диска

B.Pascal 7 & Objects/PG - 109 -

(A-Z). Если "Диск" и двоеточие будут пропущены, то используется
назначенный по умолчанию дисковод.

Каталог "\имя_кат\имя_кат\...\имя_кат" является корневым ка-
талогом и маршрутом доступа к подкаталогу, в котором содержится
имя файла. Параметр "имя_файла" может содержать до восьми симво-
лов, за которыми могут следовать точка и расширение имени файла,
длиной до трех символов. Максимально допустимая длина всего имени
файла составляет 79 символов.

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

Пример:

var f : text;
begin
Assign(f,''); { стандартный вывод }
Rewrite(f);
Writeln(f,'стандартный вывод...');
Close(f);
end;

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



B.Pascal 7 & Objects/PG - 110 -


Функция AssignCrt модуль Crt
-----------------------------------------------------------------

Назначение: Связывает текстовый файл с устройством CRТ.
(терминалом).

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

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

Примечания: Процедура AssignCrt работает точно также, как
стандартная процедура Assing, за исключением того, что имени фай-
ла не указывается. Вместо этого текстовый файл связывается с уст-
ройством CRТ (терминалом).

Это позволяет ускорить вывод (или ввод) по сравнению с той
скоростью, которая была бы возможна при использовании стандартно-
го вывода (или ввода).

Пример:

uses Crt;
var
f : text;
begin

Write('Вывести на экран или на устройство печати? [S, P]');
if UpCase(ReadKey) = 'P' then
Assign(f,'PRN') { вывод на устройство печати }
else
AssignCrt(f); { вывод на экран; используются под-
программы работы с экраном, осу-
ществляющие быстрый вывод информа-
ции }
Rewrite(f);
Writeln(f,'Быстрый вывод через программы CRT...');
Close(f)
end.



B.Pascal 7 & Objects/PG - 111 -


Функция AssignCrt модуль WinCrt
-----------------------------------------------------------------

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

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

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

Примечания: Процедура AssignCrt работает точно также, как
стандартная процедура Assing, за исключением того, что имени фай-
ла не указывается. Вместо этого текстовый файл связывается с уст-
ройством CRТ (терминалом). При последующих операциях Write и
Writeln файл выводится в окно CRT, а операции Read и Readln вы-
полняют считывание из окна CRT.

Пример: См. выше пример для AssignCrt. Для программ Windows
вместо модуля Crt используйте WinCrt.

Функция AssignDefPrn модуль WinPrn
-----------------------------------------------------------------

Назначение: Присваивает файл используемому по умолчанию
принтеру.

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

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

Примечания: Процедура AssignDefPrn вызывает AssignPrn с
Device, Driver и Port, установленными в nil. Это связывает ис-
пользуемый по умолчанию в Windows принтер с файлом f. Если акти-
вен администратор печати Windows, то любой текст, записанный в f,
сохраняется администратором печати и будет распечатываться при
закрытии файла.

Пример: См. выше пример для AbortPrn.

См. также: AbortPrn, AssignPrn, SetPrnFont, TitlePrn.



B.Pascal 7 & Objects/PG - 112 -


Функция Assigned модуль System
-----------------------------------------------------------------

Назначение: Проверяет, имеет ли указатель или процедурная
переменная значение nil.

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

Описание: function Assigned(var P): Boolean;

Примечания: Параметр P должен быть ссылкой на переменную или
указатель процедурного типа. Assigned возвращает True, если зна-
чение P не равно nil, и False, если оно равно nil. Для перемен-
ной-указателя Assigned(P) соответствует проверке P <> nil, а для
процедурной переменной - @P <> nil.

Пример:

{ под Windows используйте WinCrt }
var P: Pointer;
begin
P := nil;
if Assigned(P) then Wrileln('Вы этого не увидите');
P := @P;
if Assigned(P) then Writeln('А это увидите');
end.



B.Pascal 7 & Objects/PG - 113 -


Процедура AssignPrn модуль WinPrn
-----------------------------------------------------------------

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

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

Описание: procedure AssignPrn(var F: Text; Device, Driver,
Port: TChar);

Примечания: Присваивает принтер, описанный параметрами
Driver и Device для порта Port переменной F. Эти значения должны
соответствовать устройству, заданному в файле WIN.INI (в секции
устройств). Например, если к порту LPT1 у вас подключен принтер
LaserJet IIP, то файл WIN.INI будет выглядеть следующим образом:

[устройства]
.
.
.
HP LaserJet IIP=HPPCL,LPT1:
.
.
.

Чтобы присвоить этот принтер текстовому файлу, вызовите
AssignPrn следующим образом:

AssignPrn(F 'HP LaserJet IIP', 'HPPCL', 'LPT1:');

Вы можете получить список допустимых значений параметров,
используя функцию API Windows GetProfileString.

Если Device равно nil, параметры Driver и Port игнорируются,
и AssignPrn присваивает F используемый по умолчанию принтер. Этот
принтер указан в WIN.INI в секции [windows] под ключевым словом
"device". Этот результат можно получить также, вызвав подпрограм-
му AssignDefPrn, которая вызывает процедуру AssignedPrn с пара-
метрами Device, Driver и Port, установленными в nil.

Если активен администратор печати Windows, то записанный в F
текст сохраняется администратором печати и будет печататься при
закрытии файла.

См. также: AbortPrn, AssignDefPrn, SetPrnFont, TitlePrn.



B.Pascal 7 & Objects/PG - 114 -


Процедура Bar модуль Graph
-----------------------------------------------------------------

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

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

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

Примечания: Рисуется закрашенный столбец (что можно исполь-
зовать, например, в гистограммах). При этом используется образец
и цвет закраски, заданные с помощью процедур SetFillStyle и
SetFillPattern. Чтобы нарисовать оконтуренный столбец, вызовите
с нулевой глубиной Bar3D.

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

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

Пример:

uses Graph
var
Gd, Gm: Integer;
I, Width: Integer;
begin
Gd := Detect
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
Width := 10;
for I := 1 to 5 do
Bar(I * Width, I * 10, Succ(I) * Width, 200);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 115 -


Процедура Bar3D модуль Graph
-----------------------------------------------------------------

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

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

Описание: procedure Ваr3D(х1, у1, х2, у2: Integer; L: Word;
S: Bооlеаn);

Примечания: Рисуется закрашенный трехмерный параллелепипед.
При этом используется тип и цвет закраски, заданные с помощью
процедур SetFillStile и SetFillPattern. Трехмерный контур парал-
лелепипеда вычерчивается тем цветом и типом линии, которые уста-
новлены процедурами SetLineStyle и SetColor. Параметр L представ-
ляет собой число элементов изображения, задающих глубину трехмер-
ного контура. Если переменная, указанная в качестве параметра S,
принимает истинное значение (Truе), то для параллелепипеда рису-
ется трехмерная вершина, в противном случае вершина не рисуется
(что позволяет рисовать несколько параллелепипедов, расположенных
один на другом).

Типичный параметр глубины можно вычислить, взяв за основу
25% ширины параллелепипеда:

Bar3D(x1, y1, x2, y2, (x2 - x1 + 1) div 4, TopOn);

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

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


B.Pascal 7 & Objects/PG - 116 -

Пример:

uses Graph
var
Gd, Gm: Integer;
I, Width: Integer;
begin
Gd := Detect
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
y0 := 10;
y1 := 60;
y2 := 110;
x1 := 10;
x2 := 50;
Bar3D(x1, y0, x2, y1, 10, TopOn);
Bar3D(x1, y1, x2, y2, 10, TopOff);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 117 -


Процедура BlockRead модуль System
-----------------------------------------------------------------

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

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

Описание: procedure BlockRеаd(var f: File; var Buff; Count:
Word [; Result: Word ])

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

Данная процедура считывает из файла File записи, количество
которых не превосходит числа, указанного в переменной Count, на-
чиная с первого байта, занятого переменной Buff. Действительное
число полных считанных записей (меньшее или равное значению пере-
менной Count) возвращается в необязательном параметре Result. Ес-
ли этот параметр не задан, то в том случае, когда число прочитан-
ных записей не будет совпадать со значением переменной Count,
произойдет ошибка ввода-вывода.

Весь размер переданного блока не превышает числа байт, опре-
деляемых произведением значения переменной Count и длины записи,
указываемой при открытии файла (по умолчанию 128). Если это про-
изведение превышает 65535 (64К байта), то возникает ошибка.

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

В результате выполнения процедуры BlockRеаd текущая позиция
в файле продвигается на число записей, заданных переменной
Result.

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

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

См. также: BlockWritе.


B.Pascal 7 & Objects/PG - 118 -

Пример:

{ под Windows используется WinCrt }
program CopyFile;
{ Простая программа быстрого копирования файлов без провер-
ки на возникновение ошибок }
var
FromF, ToF, : file;
NumRead, NumWritten : word;
buf : array[1..2048] of char;
begin
Assign(FromF, ParamSrt(1)); { открыть входной файл }
Reset(FromF); { размер записи - 1 }
Assign(ToF, ParamStr(2)); { открыть выходной файл }
Rewrite(ToF, 1); { размер записи = 1 }
Writeln('Копирование ',FileSize(FromF),' байт...');
repeat
BlockRead(FromF, buf, SizeOf(buf), NumberRead);
BlockWrite(ToF, buf, NumberRead, NumWritten);
until (NumRead = 0) or (NumWitten <> NumRead);
Close(FromF);
Close(ToF);
end.



B.Pascal 7 & Objects/PG - 119 -


Процедура BlockWrite модуль System
-----------------------------------------------------------------

Назначение: Записывает одну или более записей из переменной.

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

Описание: procedure BlockWritе(var f: File; var Buff; Count:
Word [; Result: Word ]);

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

Данная процедура записывает записи, количество которых не
превосходит числа, указанного в переменной Count, начиная с пер-
вого байта, занятого переменной Buff. Действительное число полных
записанных записей (меньшее или равное значению переменной Count)
возвращается в необязательном параметре Result. Если этот пара-
метр не задан, то в том случае, когда число записанных записей не
будет совпадать со значением переменной Count, произойдет ошибка
ввода-вывода.

Весь размер переданного блока не превышает числа байт, опре-
деляемых произведением значения переменной Count и длины записи,
указываемой при открытии файла (по умолчанию 128). Если это про-
изведение превышает 65535 (64К байта), то возникает ошибка.

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


B.Pascal 7 & Objects/PG - 120 -

В результате выполнения процедуры BlockWritе текущая позиция
в файле продвигается на число записей, заданных переменной
Result.

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

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

См. также: BlockRead.

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



B.Pascal 7 & Objects/PG - 121 -


Процедура Break модуль System
-----------------------------------------------------------------

Назначение: Завершает оператор for, while или repeat.

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

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

Примечания: Процедура Break выполняет выход из внутреннего
оператора for, while или repeat. Break аналогична оператору goto
с указанием метки в конце внутреннего оператора цикла. Если Break
не содержится внутри цикла for, while или repeat, компилятор со-
общает об ошибке.

См. также: Continue, Exit, Halt.

Пример:

{ под Windows используется WinCrt }
var S: String;
begin
while True do
begin
Readln(S);
if S = '' then Break;
Writeln(S);
end;
end.



B.Pascal 7 & Objects/PG - 122 -


Функция ChangeSelector модуль WinAPI
-----------------------------------------------------------------

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

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

Описание: function ChangeSelector(SourceSel, DestSel: Word):
Word;

Примечания: Функция ChangeSelector генерирует селектор кода,
соответствующий данному селектору данных, или селектор данных,
соответствующий данному селектору кода. Эта функция изменяет
только атрибут селектора, а не его значение.

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

См. также: AllocSelector.



B.Pascal 7 & Objects/PG - 123 -


Процедура ChDir модуль System
-----------------------------------------------------------------

Назначение: Выполняет смену текущего каталога.

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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 124 -


Функция Chr модуль System
-----------------------------------------------------------------

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

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

Описание: function Chr(x: Byte): Char;

Примечания: Параметр x - это выражение целого типа. Резуль-
татом является символ с порядковым значением (значением кода
ASСII) x.

См. также: Оrd.

Пример:

{ под Windows используйте WinCrt }
var I: Integer;
begin
for I := 32 to 255 do Write(Chr(I));
end.



B.Pascal 7 & Objects/PG - 125 -


Процедура Circle модуль Graph
-----------------------------------------------------------------

Назначение: Рисует окружность. Точка (Х,Y) считается центром
окружности.

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

Описание: procedure Circlе(Х, Y: Integer; R: Word);

Примечания: Окружность рисуется текущим цветом. В каждом
графическом драйвере содержится коэффициент относительного удли-
нения, который используется в процедурах Circlе, Arс и PiеSliсе.
Параметр R задает радиус.

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

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

Пример:

uses Graph:
var
Dg, Gm: Integer;
Radius: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
for r := 1 to 5 do
Circle(100, 100, Radius*10);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 126 -


Процедура ClearDevice модуль Graph
-----------------------------------------------------------------

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

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

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

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

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

См. также: ClearViewPort, CloseGraph, InitGraph,
RestoreCrtMode, SetGraphMode.

Пример:

uses Graph:
var
Dg, Gm: Integer;
Radius: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
Randomize;
repeat
LineTo(Random(200), Random(200));
until KeyPressed;
ClearDevice;
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 127 -


Процедура ClearViewPort модуль Graph
-----------------------------------------------------------------

Назначение: Очищает текущую область просмотра (окно).

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

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

Примечания: Очищается текущая область просмотра. При этом
используется цвет, сохраненный в Раlettе(0), вызывается процедура
Bar и текущий указатель перемещается в точку с координатами
(0,0).

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

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

Пример:

uses Graph:
var
Dg, Gm: Integer;
Radius: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
begin
Rectengle(19, 19, GetMaxX - 19, GetMaxY - 19);
SetrViewPort(20, 20, GetMaxX - 10, GetMaxY - 20, ClipOn);
SetColor(White);
OutText('Для очистки области просмотра нажмите );
Readln;
ClearViewPort;
OutTextXY(0,0, ' to quit:');
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 128 -


Процедура Close модуль System
-----------------------------------------------------------------

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

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

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

Примечания: Параметр f представляет собой файловую перемен-
ную любого типа файла, который был предварительно открыт с по-
мощью процедур Rеset, Rеwrite или Аppеnd. Для внешнего файла,
связанного с переменной f полностью выполняется его обновление, и
затем он закрывается, после чего описатель файла DOS освобождает-
ся для последующего использования.

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

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

Пример:

{ под Windows используйте модуль WinCrt }
var f: file;
begin
Assign(f,'\AUTOEXEC.BAT'); { открыть файл }
Reset(f,1);
Writeln('Размер файла = ',FileSize);
Close(f); { закрыть файл }
end.



B.Pascal 7 & Objects/PG - 129 -


Процедура CloseGraph модуль Graph
-----------------------------------------------------------------

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

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

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

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

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

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

Пример:

uses Graph:
var
Dg, Gm: Integer;
Radius: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
Line(0,0, GetMaxX, GetMaxY);
Readln;
CloseGraph; { завершить графику }
end.



B.Pascal 7 & Objects/PG - 130 -


Процедура CrlEol модуль Crt
-----------------------------------------------------------------

Назначение: Стирает все символы, начиная от позиции курсора,
до конца строки. Курсор при этом не перемещается.

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

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

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

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

Window(1,1,60,20);
ClrEol;

установит для текущей позиции курсора вместо значений (1,1) зна-
чения (60,1) (то есть правая граница активного окна).

См. также: ClrScr, Window.

Процедура CrlEol модуль WinCrt
-----------------------------------------------------------------

Назначение: Стирает все символы, начиная от позиции курсора,
до конца строки. Курсор при этом не перемещается.

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

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

См. также: ClrScr.



B.Pascal 7 & Objects/PG - 131 -


Процедура ClrScr модуль Crt
-----------------------------------------------------------------

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

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

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

Примечания: Все позиции символов заполняются пробелами. При
этом используется текущее определение текстовых атрибутов. Таким
образом, если для TextВасkGround не задан черный цвет, то для
всего экрана устанавливается фоновый цвет. Это относится также к
позициям символов, очищенных с помощью процедур ClrEоl, InsLine и
DelLine, а также к пустым строкам, образующимся при пролистывании
экрана.

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

Window(1,1,60,20);
ClrScr;

приведут к очистке прямоугольной области на экране размером 60х20
с началом в точке (1,1).

См. также: ClrEol, Window.

Пример:

uses Crt;
begin
TextBackGround(LightGray); { для всего экрана устанавли-
вается светло-серый фоновый
цвет }
ClrScr;
end.



B.Pascal 7 & Objects/PG - 132 -


Процедура ClrScr модуль WinCrt
-----------------------------------------------------------------

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

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

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

Примечания: Все позиции символов заполняются пробелами. При
этом используется текущее определение текстовых атрибутов. Таким
образом, если для TextBасkGround не задан черный цвет, то для
всего экрана устанавливается фоновый цвет. Это относится также к
позициям символов, очищенных с помощью процедур ClrEоl, InsLine и
DelLine, а также к пустым строкам, образующимся при пролистывании
экрана.

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

Window(1,1,60,20);
ClrScr;

приведут к очистке прямоугольной области на экране размером 60х20
с началом в точке (1,1).

См. также: ClrEol, Window.



B.Pascal 7 & Objects/PG - 133 -


Функция Concat модуль System
-----------------------------------------------------------------

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

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

Описание: function Concat(s1, [s2, ..., sn]: String):
String;

Примечания: Каждый параметр является выражением строкового
типа. Результат представляет собой конкатенацию (объединение)
всех строковых параметров. Если длина результирующей строки пре-
вышает 255 символов, то она усекается до 255 символов. Использо-
вание операции + дает тот же результат, что и вызов функции
Concat:

S := 'ABC' + 'DEF';

Пример:

var
s : string;
begin
s := Concat('ABC','DEF'); { 'ABCDEF' }
end.


B.Pascal 7 & Objects/PG - 134 -

Процедура Continue модуль System
-----------------------------------------------------------------

Назначение: Продолжает выполнение оператора for, while или
repeat.

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

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

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

См. также:; Break, Exit, Halt.

Пример:

{ под Windows используйте модуль WinCrt }
var
I: Integer;
Name: string[79];
F: file;
begin
for I := 1 to ParamCount do
begin
Name := ParamStr(I);
Assign(F, Name);
{$I-}
Reset(F, 1);
{$I+}
if IOResult <> 0 then
begin
Writeln('Файл не найден: ', Name);
Continue;
end;
Writeln(Name,': ', FileSize(F), ' байт');
Close(F);
end;
end.



B.Pascal 7 & Objects/PG - 135 -


Функция Copy модуль System
-----------------------------------------------------------------

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

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

Описание: procedure Cоpy(s: String; Indx: Integer; Count:
Integer);

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

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

Пример:

var
s : string;
begin
s := 'ABCDEF';
s := Copy(s,2,3) { 'BCD' }
end.



B.Pascal 7 & Objects/PG - 136 -


Функция Cos модуль System
-----------------------------------------------------------------

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

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

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

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

См. также: ArcTan, Sin.

Пример:

var
r : real;
begin
r := Cos(Pi);
end.

Процедура CreateDir модуль WinDos
-----------------------------------------------------------------

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

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

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

Примечания: Создаваемый подкаталог задается параметром Dir.
Ошибки сообщаются в DosError. Подпрограмма MkDir выполняет функ-
цию, аналогичную CreateDir, но воспринимает в качестве аргумента
строку Паскаля, а не строку с завершающим нулем.

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



B.Pascal 7 & Objects/PG - 137 -


Функция CSeg модуль System
-----------------------------------------------------------------

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

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

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

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

См. также: DSeg, SSeg.

Процедура CursorTo модуль WinCrt
-----------------------------------------------------------------

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

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

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

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



B.Pascal 7 & Objects/PG - 138 -


Процедура Dec модуль System
-----------------------------------------------------------------

Назначение: Уменьшает значение переменной.

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

Описание: procedure Dec(var x[; n: Longint]);

Примечания: Параметр x представляет собой переменную пере-
числимого типа, а n - целочисленное выражение. Значение x умень-
шается на 1 (или на n в случае явного задания n). То есть Dес(x)
соответствует x := x-1, а Dес(x,n) соответствует x := x-n. Функ-
ция Dес порождает оптимизированный код и особенно полезна в боль-
ших циклах.

См. также: Inc, Pred.

Пример:

var
IntVar : integer;
LongIntVar : longint;
begin
Dec(IntVar); { IntVar := IntVar - 1 }
Dec(LongIntVar(Var, 5); { LongIntVar := LongIntVar - 5 }
end.



B.Pascal 7 & Objects/PG - 139 -


Процедура Delay модуль Crt
-----------------------------------------------------------------

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

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

Описание: procedure Delay(Msec : word);

Примечания: Параметр Msec задает число миллисекунд интервала
ожидания.

Данная процедура является приблизительной, поэтому период
задержки не будет точно равняться заданному числу миллисекунд.

Процедура Delete модуль System
-----------------------------------------------------------------

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

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

Описание: Delete(var s: String; Indx: Integer; Count:
Integer);

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

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



B.Pascal 7 & Objects/PG - 140 -


Процедура DelLine модуль Crt
-----------------------------------------------------------------

Назначение: Удаляет строку, на которой находится курсор.

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

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

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

Все позиции символов заполняются пробелами. При этом исполь-
зуется текущее определение текстовых атрибутов. Таким образом,
если для TextBасkGround не задан черный цвет, то для всего экрана
устанавливается фоновый цвет.

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

Window(10,10,15,20);
DelLine;

DelLine приводит к удалению первой строки окна, которая яв-
ляется десятой строкой экрана.

Прочее: См. также процедуры InsLine, Window.



B.Pascal 7 & Objects/PG - 141 -


Процедура DetectGraph модуль Graph
-----------------------------------------------------------------

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

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

Описание: procedure DetectGraph(var Driver, Mode: Integer);

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

Если не указываются другие действия, процедура InitGraph вы-
зывает процедуру DetectGraph, находит и загружает соответствующий
драйвер и инициализирует графическую систему. Единственной причи-
ной непосредственного вызова процедуры DetectGraph является заме-
на выбираемого ей драйвера. В приведенном ниже примере идентифи-
цируется система с объемом памяти 64 или 256К и графическим
адаптером EGA, но загружается драйвер СGA. Заметим, что когда вы
передаете процедуре InitGraph параметр GraphDriver (задающий
драйвер), отличающийся от Detect, вы должны также передать для
требуемого драйвера в параметре GraphMode допустимый графический
режим.

Ограничения: Процедуру DetectGraph (или Detect c InitGraph)
не следует использовать для IBM 8514 (если вы не хотите эмулиро-
вать режим VGA).

Прочее: См. также процедуры InitGraph, GraphResult.

Пример:

uses Graph:
var
GraphDriver, GraphMode: Integer;
begin
DetectGraph(GraphDriver, GraphMode);
if (GraphDriver = EGA) or
(GraphDriver = EGA64) then
begin
GraphDriver := CGA;
GraphMode := CGAHi;
end;
InitGraph(GraphDriver, GraphMode, ''),
if GraphResult <> rgOk then
Halt(1);
Line(0, 0, GetMaxX, GetMaxY);

B.Pascal 7 & Objects/PG - 142 -

Readln;
CloseGraph;
end;

Функция DiskFree модуль Dos
-----------------------------------------------------------------

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

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

Описание: function DiskFree(Disk : byte): Longint;

Примечания: Значение параметра Disk, равное 0, задает опре-
деленный по умолчанию диск; значение 1 указывает на диск A, 2 -
на диск В и т.д. Если номер диска недействителен, то данная про-
цедура возвращает значение -1.

См. также: DiskSize, GetDir.

Пример:

{ под Windows используйте модули WinDos и WinCrt }
uses Dos;
begin
Writeln('Свободно ',DiskFree(0), div 1024,' килобайт');
end.



B.Pascal 7 & Objects/PG - 143 -


Функция DiskSize модуль Dos
-----------------------------------------------------------------

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

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

Описание: function DiskSizе(Disk : Byte): Longint;

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

См. также: DiskFree, GetDir.

Пример:

{ под Windows используйте модули WinDos и WinCrt }
uses Dos;
begin
Writeln(DiskSize(0) div 1024,' килобайт свободно');
end.



B.Pascal 7 & Objects/PG - 144 -


Процедура Dispose модуль System
-----------------------------------------------------------------

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

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

Описание: procedure Dispose(var p: Pointer [, Destructor]);

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

Данная процедура уничтожает переменную, на которую указывает
p и возвращает занимаемую ей память в динамически распределяемую
область памяти. Значение p становится неопределенным, и последую-
щие ссылки вида p^ являются ошибкой.

Ограничения: Если p не указывает на область в динамической
памяти, то происходит ошибка этапа выполнения.

Полную информацию по данной теме вы можете найти в разделе
"Администратор динамически распределяемой области памяти" Главы
21 "Руководства по языку".

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

Пример:

type
Str18 = sting[18];
var
p : ^Str18;
begin
New(p);
p^ := 'теперь вы можете это видеть...';
Dispose(p); { а теперь нет... }
end.



B.Pascal 7 & Objects/PG - 145 -


Процедура DoneWithCrt модуль WinCrt
-----------------------------------------------------------------

Назначение: Уничтожает окно CRT (если оно еще существует).

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

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

Примечания: Вызов DoneWithCrt непосредственно перед заверше-
нием программы предотвращает переход окна CRT в неактивное состо-
яние; таким образом, пользователю не требуется закрывать это ок-
но.

Функция DosExitCode модуль Dos
-----------------------------------------------------------------

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

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

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

Примечания: Младший байт представляет собой код, переданный
процессом при завершении. Значение старшего байта равно 0 при
нормальном завершении, 1 - при завершении по нажатию клавиш
Ctrl+C, 2 - при завершении из-за ошибки устройства и 3 - если
процесс был завершен процедурой Keep.

См. также: Exec. Keep.



B.Pascal 7 & Objects/PG - 146 -


Процедура DOS3Call модуль WinAPI
-----------------------------------------------------------------

Назначение: Дает прерывание по вызову функции DOS - 21H.

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

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

Примечания: Вызов данной процедуры соответствует выполнению
инструкции INT21H. Процедура DOS3Call выполняется под Windows
быстрее, чем соответствующее программное прерывание DOS INT 21H.

Ограничения: Поскольку DOS3Call требует передачи параметров
в регистрах ЦП, она может использоваться только в подпрограмма на
языке ассемблера.

Пример: В следующем примере показано, как вызвать DOS3Call
из языка ассемблера.

function FileRead(Handle: Integer; var Buffer; Count: Word):
Word; assembler;
asm
PUSH DS { сохранить DS }
MOV AH,3FH { AH - функция чтения из файла }
MOV BX,Handle { BX - описатель }
MOV CX,Count { CX - счетчик }
LDS DX,Buffer { DS:DX - адрес буфера }
CALL DOS3Call { аналогично INT 21H но выпол-
няется быстрее }
JNC @1 { AX - число считанных байт при
отсутствии переноса }
MOV AX,0FFFH { AX = 0FFFFH означает ошибку }
@1: POP DS { восстановить DS }
end;



B.Pascal 7 & Objects/PG - 147 -


Процедура DosVersion модуль Dos, WinDos
-----------------------------------------------------------------

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

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

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

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

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

Пример:

{ под Windows используйте WinDos и WinCrt }
uses Dos;
begin
Ver := DosVersion;
Writeln(' Это DOS версии ', Lo(Ver), '.', Hi(Ver));
end.

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



B.Pascal 7 & Objects/PG - 148 -


Процедура DrawPoly модуль Graph
-----------------------------------------------------------------

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

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

Описание: procedure DrawPoly(N : word; var S);

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

Данная процедура использует текущий тип линии и текущий
цвет.

Заметим, что для вычерчивания замкнутой фигуры с n вершинами
вы должны передать при обращении к процедуре DrawPoly n + 1 коор-
динату, где координата вершины с номером n будет равна координате
вершины с номером 1 (см. приведенный ниже пример).

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

См. также: FillPoly, GetLineSettings, SetColor,
SetLineStyle, GraphResult.

Пример:

uses Graph;
const Triangle : array[1..4] of PolyPoint =
((x: 10; y: 100),
(x: 100; y: 100),
(x: 150; y: 150),
(x: 50; y: 100));
begin { рисует треугольник }
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
DrawPoly(SizeOf(Triangle)
div SizeOf(PolyPoint), { 4 }
Triangle);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 149 -


Функция Dseg модуль System
-----------------------------------------------------------------

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

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

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

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

См. также: CSeg, SSeg.



B.Pascal 7 & Objects/PG - 150 -


Процедура Ellipse модуль Graph
-----------------------------------------------------------------

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

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

Описание: procedure Ellipsе(Х, Y: Integer; SStart, SEnd:
Word; RadX, RadY: Word);

Примечания: Процедура рисует эллиптическую дугу, используя
(Х,Y), как точку центра, а RadX, RadY - как горизонтальную и вер-
тикальную оси. Дуга эллипса вычерчивается от начального угла (па-
раметр SStart) до конечного угла (параметр SEnd) текущим цветом.

Значение начального угла, равное 0, и конечного угла, равное
359, приведут к вычерчиванию полного эллипса. Углы для процедур
Arc, Ellipse и PieSlice задаются по направлению часовой стрелки.
При этом значение (в градусах) 0 соответствует 3 часам, 90 граду-
сом - 12 часам и т.д. Информацию о последнем вызове процедуры
Ellipse можно получить с помощью процедуры GetArcCoords.

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

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

Пример:

Uses Graph;
var
Gd, Gm: integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
If GraphResult <> grOk then
Halt(1);
Ellipse(100,100,0,20,30,50);
Ellipse(100,100,90,180,50,30);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 151 -


Функция EnvCount модуль Dos
-----------------------------------------------------------------

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

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

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

Примечания: Функция EnvCount возвращает число строк, содер-
жащихся в описании операционной среды DOS. Каждая такая строка
имеет вид 'ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ'. Эти строки можно просмотреть с
помощью функции EnvStr.

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

См. также: EnvStr, GetEnv.

Пример:

uses Dos;
var
I: integer;
begin
for I := 1 to EnvCount do
WriteLn(EnvStr(I));
end.

Функция EnvStr модуль Dos
-----------------------------------------------------------------

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

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

Описание: function EnvStr(Indx : integer): String;

Примечания: Данная функция возвращает заданную строку опера-
ционной среды DOS. Эта строка имеет вид `ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ`.
Индексом первой строки является единица. Если Indx меньше единицы
или больше, чем EnvCount, EnvStr возвращает пустую строку.

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

См. также: EnvCount, GetEnv.



B.Pascal 7 & Objects/PG - 152 -


Функция Eof (текстовые файлы) модуль System
-----------------------------------------------------------------

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

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

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

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

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

См. также: Eoln, SeekEof.

Пример:

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



B.Pascal 7 & Objects/PG - 153 -


Функция Eof (типизированные и нетипизированные файлы) мод. System
-----------------------------------------------------------------

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

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

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

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

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



B.Pascal 7 & Objects/PG - 154 -


Функция Eoln модуль System
-----------------------------------------------------------------

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

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

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

Тип результата: Булевский (boolean).

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

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

begin
WriteLn(Eoln); { Это приведет к тому, что }
{ программа будет ожидать ввода }
{ с клавиатуры }
end.

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

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



B.Pascal 7 & Objects/PG - 155 -


Процедура Erase модуль System
-----------------------------------------------------------------

Назначение: Стирает внешний файл.

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

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

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

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

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

См. также: Rename.

Пример:

{ под Windows используйте WinCrt }
var
f : file;
ch : char;
begin
{ получить из командной строки имя предназначенного для
удаления файла }
Assign(f, ParamStr(1));
{$I-}
Reset(f);
{$I+}
if IOResult <> 0 then
Write('Файл не найден ' ParamStr(1))
else
begin
Close();
Write('Стереть ', ParamStr(1)),'?');
Readln(ch);
if UpCase(ch) = 'Y' then
Erase(f);
end;
end.



B.Pascal 7 & Objects/PG - 156 -


Процедура Exclude модуль System
-----------------------------------------------------------------

Назначение: Удаляет элемент из множества.

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

Описание: procedure Exclude(var S: set of T; I: T);

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

Exclude(S, I)

соответствует

S := S - [I]

но процедура Exclude генерирует более эффективный код.

См. также: Incude.

Процедура Exec модуль Dos
-----------------------------------------------------------------

Назначение: Выполняет указанную программу, передавая задан-
ную строку параметров (командную строку).

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

Описание: procedure Exec(Path, S: String);

Примечания: Имя программы указывается в параметре Path, а
строка параметров содержится в параметре S. Для выполнения внут-
ренней команды DOS запустите файл COММAND.CОМ. Например:

Exec('COMMAND.COM','/C DIR *.PAS');

/C перед командой является запросом на запуск файла CОММAND.
COМ (но не других программ). Возможные коды ошибок можно получить
с помощью функции DosError. Этими кодами могут быть 2, 8, 10 и
11. Код завершения процесса можно получить с помощью функции
DosExitCode.

До начала выполнения программы процедура Ехес не изменяет
распределение памяти. Таким образом, при компиляции программы,
использующей процедуру Ехес, необходимо обеспечить задание макси-
мального размера динамически распределяемой области памяти, иначе
памяти может не хватить (DosError = 8).


B.Pascal 7 & Objects/PG - 157 -

См. также: DosExitCode, SwapVectors, DosError, SaveIntXX.

Пример:

{ 16К выделяется для стека, динамически распределяемая об-
ласть не запрашивается и не резервируется }
{$M $4000,0,0}
uses Dos;
var
ProgramName, CmdLine : string;
begin
Write('Программа, которую нужно выполнить (включая
полное имя маршрута): ');
Readln(ProgramName);
Write('Командная строка, которую нужно передать в ',
'программу ', ProgramName, ':');
Readln(CmdLine);
Writeln('Начало выполнения Exec...');
Exec(ProgramName, CmdLine);
Writeln('...возврат из Exec');
if DosError <> 0 then { ошибка? }
Writeln('Ошибка DOS #', DosError)
else
Writeln('Вызов Exec прошел успешно. Код завершения ',
'порожденного процесса = ', DosExitCode);
end.



B.Pascal 7 & Objects/PG - 158 -


Процедура Exit модуль System
-----------------------------------------------------------------

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

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

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

Примечания: Когда процедура Eхit выполняется в подпрограмме
(процедуре или функции), то происходит возврат управления из
подпрограммы. Когда эта процедура выполняется в операторной части
программы, она вызывает прекращение работы программы. Обращение к
Eхit аналогично оператору перехода на оператор с меткой, адрес
которого находится непосредственно после оператора end.

См. также: Нalt.

Пример:

{ под Windows используйте WinCrt }
uses Crt;
procedure WasteTime;
repeat
if KeyPressed then Exit;
Write('Xx');
until False;
end;
begin
WasteTime;
end.

Переменная ExitCode модуль System
-----------------------------------------------------------------

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

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

Описание: var ExitCode: Integer;

Примечания: Процедура выхода может узнать причину заверше-
ния, проверив значение ExitCode. При нормальном завершении
ExitCode равно 0. Если программа завершается через обращение к
Halt, то ExitCode содержит значение, переданное Halt. Если прог-
рамма завершается из-за ошибки этапа выполнения, то ExitCode со-
держит код ошибки. О процедурах выхода рассказывается в Главе 22
("Вопросы управления") "Руководства по языку".

См. также: ErrorAddr, ExitProc.

B.Pascal 7 & Objects/PG - 159 -


Переменная ExitProc модуль System
-----------------------------------------------------------------

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

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

Описание: var ExitProc: Pointer;

Примечания: ExitProc позволяет вам установить процедуры вы-
хода, которые должны выполняться в процессе завершения программы
(нормальном завершении, завершении по вызову Halt или завершении
из-за ошибки этапа выполнения). О процедурах выхода подробнее
рассказывается в Главе 22 ("Вопросы управления") "Руководства по
языку".

См. также: ErrorAddr, ExitCode.

Функция Exp модуль System
-----------------------------------------------------------------

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

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

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

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

См. также: Ln.



B.Pascal 7 & Objects/PG - 160 -


Процедура FatalExit модуль WinAPI
-----------------------------------------------------------------

Назначение: Используется в целях отладки для сообщения о фа-
тальных ошибках.

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

Описание: function FatalExit(Code: Integerl);

Примечания: При работе в Windows FatalExit выводит заданный
код ошибки и текущее состояния Windows на отладочном мониторе и
выводит запрос на продолжение. В защищенном режиме DOS FatalExit
выводит заданный код ошибки и завершает прикладную программу.

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

Функция 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, строковые типы рабо-
ты с файлами.



B.Pascal 7 & Objects/PG - 161 -


Функция 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, строковые типы рабо-
ты с файлами.



B.Pascal 7 & Objects/PG - 162 -


Функция 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.



B.Pascal 7 & Objects/PG - 163 -


Функция 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.



B.Pascal 7 & Objects/PG - 164 -


Функция 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.



B.Pascal 7 & Objects/PG - 165 -


Функция 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.



B.Pascal 7 & Objects/PG - 166 -


Процедура 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.



B.Pascal 7 & Objects/PG - 167 -


Функция 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.



B.Pascal 7 & Objects/PG - 168 -


Процедура 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.

B.Pascal 7 & Objects/PG - 169 -


Процедура 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.

B.Pascal 7 & Objects/PG - 170 -


Процедура 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.



B.Pascal 7 & Objects/PG - 171 -


Функция 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.



B.Pascal 7 & Objects/PG - 172 -


Процедура 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) данная процедура не-
доступна.


B.Pascal 7 & Objects/PG - 173 -

См. также: 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.



B.Pascal 7 & Objects/PG - 174 -


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

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 175 -


Функция 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.



B.Pascal 7 & Objects/PG - 176 -


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

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

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

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

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

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

B.Pascal 7 & Objects/PG - 177 -


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

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

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

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

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

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

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

См. также: LoadResource.



B.Pascal 7 & Objects/PG - 178 -


Функция 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.

Пример:

B.Pascal 7 & Objects/PG - 179 -


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;

B.Pascal 7 & Objects/PG - 180 -

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.



B.Pascal 7 & Objects/PG - 181 -


Функция 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.



B.Pascal 7 & Objects/PG - 182 -


Процедура 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.



B.Pascal 7 & Objects/PG - 183 -


Функция 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.



B.Pascal 7 & Objects/PG - 184 -


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

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

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

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

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

См. также: SetCBreak.



B.Pascal 7 & Objects/PG - 185 -


Функция 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.



B.Pascal 7 & Objects/PG - 186 -


Функция 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.



B.Pascal 7 & Objects/PG - 187 -


Функция 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.

B.Pascal 7 & Objects/PG - 188 -


Процедура 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.



B.Pascal 7 & Objects/PG - 189 -


Функция 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.



B.Pascal 7 & Objects/PG - 190 -


Функция 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.



B.Pascal 7 & Objects/PG - 191 -


Функция 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.



B.Pascal 7 & Objects/PG - 192 -


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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 193 -


Процедура 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

B.Pascal 7 & Objects/PG - 194 -

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.



B.Pascal 7 & Objects/PG - 195 -


Процедура 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.


B.Pascal 7 & Objects/PG - 196 -

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 197 -


Процедура 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 и зависит от текущего драйвера.


B.Pascal 7 & Objects/PG - 198 -


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

------------T---------T--------T-----------T------------T-------¬
¦Графический¦ Имя ¦Значение¦ Столбцов ¦ Палитра ¦Страниц¦
¦ драйвер ¦константы¦ ¦ х строк ¦ ¦ ¦
+-----------+---------+--------+-----------+------------+-------+
¦ 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 ¦

B.Pascal 7 & Objects/PG - 199 -

¦ 8514 ¦ IBM8514H¦ 0 ¦ 1024x768 ¦ 256 цветов¦ 1 ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦
L-----------+---------+--------+-----------+------------+--------
* - 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.



B.Pascal 7 & Objects/PG - 200 -


Процедура 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.



B.Pascal 7 & Objects/PG - 201 -


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

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

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

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

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

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

См. также: SetIntVec.


B.Pascal 7 & Objects/PG - 202 -

Процедура 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.



B.Pascal 7 & Objects/PG - 203 -


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

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

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

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

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

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

См. также: SetColor.



B.Pascal 7 & Objects/PG - 204 -


Функция 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.



B.Pascal 7 & Objects/PG - 205 -


Функция 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.



B.Pascal 7 & Objects/PG - 206 -


Функция 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.



B.Pascal 7 & Objects/PG - 207 -


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

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

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 208 -


Функция 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.



B.Pascal 7 & Objects/PG - 209 -


Процедура 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.



B.Pascal 7 & Objects/PG - 210 -


Функция 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, если в данный момент такой мо-
дуль не загружен.



B.Pascal 7 & Objects/PG - 211 -


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

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

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

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

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


B.Pascal 7 & Objects/PG - 212 -

Процедура 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.


B.Pascal 7 & Objects/PG - 213 -


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

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 214 -


Процедура 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.



B.Pascal 7 & Objects/PG - 215 -


Функция 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 используется
для просмотра экспортируемой функции по имени и порядковому зна-
чению:


B.Pascal 7 & Objects/PG - 216 -

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.


B.Pascal 7 & Objects/PG - 217 -


Процедура 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.



B.Pascal 7 & Objects/PG - 218 -


Процедура 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.



B.Pascal 7 & Objects/PG - 219 -


Функция 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.



B.Pascal 7 & Objects/PG - 220 -


Процедура 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.



B.Pascal 7 & Objects/PG - 221 -


Функция 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.



B.Pascal 7 & Objects/PG - 222 -


Функция 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;

B.Pascal 7 & Objects/PG - 223 -

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.



B.Pascal 7 & Objects/PG - 224 -


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

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

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

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

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

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

------------------T----------------------------------¬
¦ Тип ¦ Флаги ¦
+-----------------+----------------------------------+
¦ Фиксированный ¦ gmem_Fixed ¦
¦ Перемещаемый ¦ gmem_Moveable ¦
¦ Выгружаемый ¦ gmem_Moveable + gmem_Discardable ¦
L-----------------+-----------------------------------

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

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

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

B.Pascal 7 & Objects/PG - 225 -

сателем блока, но в Windows это не всегда так.

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

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

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

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



B.Pascal 7 & Objects/PG - 226 -


Функция 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.



B.Pascal 7 & Objects/PG - 227 -


Функция 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.



B.Pascal 7 & Objects/PG - 228 -


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

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

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

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

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

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

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

См. также: GlobalDosFree.



B.Pascal 7 & Objects/PG - 229 -


Функция 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.



B.Pascal 7 & Objects/PG - 230 -


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

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

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

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

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

---------------------T------------------------------------------¬
¦ Константа ¦ Описание ¦
+--------------------+------------------------------------------+
¦ gmem_DDEShare ¦ Блок может использоваться совместно. При-¦
¦ ¦ меняет только для динамического обмена¦
¦ ¦ данными (DDE). ¦
¦ ¦ ¦
¦ gmem_Discardable ¦ Блок может быть выгружаемым. ¦
¦ ¦ ¦
¦ gmem_Discarded ¦ Блок был выгружен. ¦
¦ ¦ ¦
¦ gmem_Not_Banked ¦ Блок не может быть банкируемым. ¦
L--------------------+-------------------------------------------

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

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

--------------------------T--------------------¬
¦ Увеличивают счетчик ¦ Уменьшают счетчик ¦
+-------------------------+--------------------+
¦ GlobalFix ¦ GlobalUnfix ¦
¦ GlobalLock ¦ GlobalUnlock ¦
¦ LockSegment ¦ UnlockSegment ¦
L-------------------------+---------------------

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



B.Pascal 7 & Objects/PG - 231 -


Функция 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.

B.Pascal 7 & Objects/PG - 232 -


Функция 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.



B.Pascal 7 & Objects/PG - 233 -


Функция 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.



B.Pascal 7 & Objects/PG - 234 -


Функция 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.



B.Pascal 7 & Objects/PG - 235 -


Функция 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.

B.Pascal 7 & Objects/PG - 236 -


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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 237 -


Функция 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.



B.Pascal 7 & Objects/PG - 238 -


Функция 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.



B.Pascal 7 & Objects/PG - 239 -


Функция 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.



B.Pascal 7 & Objects/PG - 240 -


Функция 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.



B.Pascal 7 & Objects/PG - 241 -


Процедура 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.



B.Pascal 7 & Objects/PG - 242 -


Функция 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.



B.Pascal 7 & Objects/PG - 243 -


Функция 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.

B.Pascal 7 & Objects/PG - 244 -

Пример:

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.



B.Pascal 7 & Objects/PG - 245 -


Процедура 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;



B.Pascal 7 & Objects/PG - 246 -


Функция 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;



B.Pascal 7 & Objects/PG - 247 -


Процедура 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.



B.Pascal 7 & Objects/PG - 248 -


Процедура 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.



B.Pascal 7 & Objects/PG - 249 -


Процедура 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 }



B.Pascal 7 & Objects/PG - 250 -


Процедура 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 определяет маршрут доступа к каталогу, в кото-
ром находятся графические драйверы. Если этот параметр пуст, то
подразумевается, что файлы драйверов содержатся в текущем катало-

B.Pascal 7 & Objects/PG - 251 -

ге.

Обычно 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 (или

B.Pascal 7 & Objects/PG - 252 -

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.



B.Pascal 7 & Objects/PG - 253 -


Процедура 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;



B.Pascal 7 & Objects/PG - 254 -


Процедура InsLine модуль Crt
-----------------------------------------------------------------

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

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

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

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

Всем позициям символов новой строки присваивается значение
пробела с текущими атрибутами текста. Таким образом, если проце-
дурой TextВасkGround не установлен фоновый черный цвет, то новая
строка имеет черный фоновый цвет.

Данная процедура зависит от используемого окна. Например:

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

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

См. также: DelLine, Window.



B.Pascal 7 & Objects/PG - 255 -


Функция 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 предоставила вам функцию ав-

B.Pascal 7 & Objects/PG - 256 -

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

{$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), а процедура

B.Pascal 7 & Objects/PG - 257 -

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.



B.Pascal 7 & Objects/PG - 258 -


Функция 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.



B.Pascal 7 & Objects/PG - 259 -


Функция 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.



B.Pascal 7 & Objects/PG - 260 -


Процедура 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.



B.Pascal 7 & Objects/PG - 261 -


Функция 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.



B.Pascal 7 & Objects/PG - 262 -


Процедура 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;

B.Pascal 7 & Objects/PG - 263 -


Функция KeyPressed модуль WinCrt
-----------------------------------------------------------------

Назначение: Возвращает значение Truе, если на клавиатуре на-
жата клавиша и False в противном случае.

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

Описание: function KeyPressed: Boolean;

Примечания: Символ (или символы) остаются в буфере клавиату-
ры. Данная процедура не распознает клавиш перевода регистра, та-
ких, как Shift, Аlt, NumLock и т.д. Клавишу можно считать с по-
мощью функции ReadKey.

См. также: ReadKey.

Пример:

uses Crt;
begin
repeat
Write('Xx'); { заполнять экран, пока нажата кла-
виша }
until KeyPressed;
end;



B.Pascal 7 & Objects/PG - 264 -


-------------------------------------------------------------
Функция 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.



B.Pascal 7 & Objects/PG - 265 -


Процедура 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.


B.Pascal 7 & Objects/PG - 266 -

См. также: 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.



B.Pascal 7 & Objects/PG - 267 -


Процедура 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.



B.Pascal 7 & Objects/PG - 268 -


Процедура 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.

B.Pascal 7 & Objects/PG - 269 -


Функция 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.



B.Pascal 7 & Objects/PG - 270 -


Функция 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.


B.Pascal 7 & Objects/PG - 271 -


Значения ошибок, возвращаемых LoadLibrary, перечислены в
следующей таблице:

----------T----------------------------------------------------¬
¦Значение ¦ Смысл ¦
+---------+----------------------------------------------------+
¦ 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 ¦ Попытка в реальном режиме загрузить прикладную¦
¦ ¦ программу, помеченную только для защищенного режи-¦
¦ ¦ ма. ¦

B.Pascal 7 & Objects/PG - 272 -

----------T----------------------------------------------------¬
¦Значение ¦ Смысл ¦
+---------+----------------------------------------------------+
¦ ¦ ¦
¦ 19 ¦ Была попытка загрузки упакованного выполняемого¦
¦ ¦ файла. Перед загрузкой файл должен быть распакован.¦
¦ ¦ ¦
¦ 20 ¦ Недопустимая библиотека динамической компоновки¦
¦ ¦ (DLL), или одна из DLL, требуемая для выполнения¦
¦ ¦ прикладной программы, была недопустимой. ¦
¦ ¦ ¦
¦ 21 ¦ Приложение требует 32-битовых расширений Microsoft¦
¦ ¦ Windows. ¦
L---------+-----------------------------------------------------

См. также: FreeLibrary, GetProcAddress.



B.Pascal 7 & Objects/PG - 273 -


Функция 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.



B.Pascal 7 & Objects/PG - 274 -


Функция 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.



B.Pascal 7 & Objects/PG - 275 -


Функция 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.



B.Pascal 7 & Objects/PG - 276 -


Функция LoWord модуль WinAPI
-----------------------------------------------------------------

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

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

Описание: function LoWord(A: Longint): Byte;

Примечания: LoWord возвращает младший байт значения, задан-
ного A.

См. также: HiWord.



B.Pascal 7 & Objects/PG - 277 -


Функция 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.



B.Pascal 7 & Objects/PG - 278 -


Процедура 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 задают младшее и старшее слово
возвращаемого значения.



B.Pascal 7 & Objects/PG - 279 -


Функция 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);
.
.

B.Pascal 7 & Objects/PG - 280 -

.
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.



B.Pascal 7 & Objects/PG - 281 -


Функция 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);

B.Pascal 7 & Objects/PG - 282 -


будет выводить:

TextEdit: Сохранить текущие изменения?
Yes (Y), No (N), Cancel (C):

и ждет от пользователя нажатия клавиши Y, N или C.

В защищенном режиме DOS параметр WndParent игнорируется, как
и все константы mb_XXXX, не определяющие командные кнопки.

См. также: Константы Id_XXXX, mb_XXXX.



B.Pascal 7 & Objects/PG - 283 -


Процедура 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.



B.Pascal 7 & Objects/PG - 284 -


Процедура 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.



B.Pascal 7 & Objects/PG - 285 -


Процедура 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.



B.Pascal 7 & Objects/PG - 286 -


Процедура 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.



B.Pascal 7 & Objects/PG - 287 -


Функция 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.



B.Pascal 7 & Objects/PG - 288 -


Процедура NormVideo модуль Crt
-----------------------------------------------------------------

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

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

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

Примечания: В блоке Crt имеется байтовая переменная
(ТехtAttr), которая используется для сохранения текущего видеоат-
рибута. Данная процедура восстанавливает для TехtAttr то значе-
ние, которое эта переменная имела до запуска программы.

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

Процедура NoSound модуль Crt
-----------------------------------------------------------------

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

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

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

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

Sound(440);
Delay(500);
NoSound;

См. также: Sound.



B.Pascal 7 & Objects/PG - 289 -


Функция Odd модуль System
-----------------------------------------------------------------

Назначение: Проверяет, является ли аргумент нечетным числом.

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

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

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

Функция Ofs модуль System
-----------------------------------------------------------------

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

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

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

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

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



B.Pascal 7 & Objects/PG - 290 -


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

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

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

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

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

См. также: Chr.

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

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

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

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

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

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

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

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


B.Pascal 7 & Objects/PG - 291 -

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

CPY := CPY + TextHeight(TextString)

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

CPX := CPX + TextWidth(TextString)

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

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

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

B.Pascal 7 & Objects/PG - 292 -

ся.

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

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

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

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

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

Пример:

uses Graph;
var
Gd, Gm : integer;
begin

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



B.Pascal 7 & Objects/PG - 293 -


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

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

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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 294 -


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

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

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

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

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

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

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

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

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

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

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

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

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

Пример:

{$M 16384,65536,655360 }
use Overlay;
const
ExtractSize = 49152; { 48K }

B.Pascal 7 & Objects/PG - 295 -

begin
OvrInit('EDITOR.OVR');
Writeln('Начальный размер оверлейного буфера = ',
OvrGetBuf, 'байт');
OvrSetBuf(OvrGetBuf+ExtractSize);
Writeln('Размер оверлейного буфера увеличен теперь до ',
OvrGetBuf, 'байт');
end.

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

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

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

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

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

См. также: OvrSetRetry.



B.Pascal 7 & Objects/PG - 296 -


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

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

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

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

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

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

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

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

Пример:

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

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

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

B.Pascal 7 & Objects/PG - 297 -


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

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

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

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

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

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

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

B.Pascal 7 & Objects/PG - 298 -


Пример:

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



B.Pascal 7 & Objects/PG - 299 -


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

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

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

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

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

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

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

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

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

Пример:

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

B.Pascal 7 & Objects/PG - 300 -


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

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

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

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

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

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

См. также: OvrGetRetry.

Пример:

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



B.Pascal 7 & Objects/PG - 301 -


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

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

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

Описание:

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

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

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

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

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

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

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

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

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

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

Пример:

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


B.Pascal 7 & Objects/PG - 302 -


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

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

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

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

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

См. также: ParamCount.

Пример:

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 303 -


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

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

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

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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 304 -


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

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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 305 -


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

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

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

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

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

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

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

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

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

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

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

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

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

См. также: Addr.

Пример:

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



B.Pascal 7 & Objects/PG - 306 -


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

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

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

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

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

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

Аналогично:

PutImage(x,y,BitMap,XORPut);

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

PutImage(x,y,BitMap,NotPut);

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

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

program NoClip;
uses Graph;

B.Pascal 7 & Objects/PG - 307 -

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

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


B.Pascal 7 & Objects/PG - 308 -

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 309 -


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

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

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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 310 -


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

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

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

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

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

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

См. также: Randomize.

Пример:

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

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

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

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

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

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

См. также: Random.


B.Pascal 7 & Objects/PG - 311 -


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

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

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

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

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

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

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

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

B.Pascal 7 & Objects/PG - 312 -

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

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

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

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

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

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



B.Pascal 7 & Objects/PG - 313 -


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

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

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

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

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

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

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

См. также: Write.



B.Pascal 7 & Objects/PG - 314 -


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

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

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

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

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

См. также ReadKey.

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

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

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

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

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

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

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

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

B.Pascal 7 & Objects/PG - 315 -

FuncKey := True;
Ch := ReadKey;
end;

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

См. также: KeyPressed.



B.Pascal 7 & Objects/PG - 316 -


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

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

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

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

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

См. также: KeyPressed.

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

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

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

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

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

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

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

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

См. также: Read.



B.Pascal 7 & Objects/PG - 317 -


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

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

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

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

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

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

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

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

Пример:

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



B.Pascal 7 & Objects/PG - 318 -


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

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

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

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

Примечания: В случае ошибок возвращаемое значение меньше ну-
ля. В противном случае возвращается внутренний номер драйвера.
Эта программа позволяет пользователю загрузить файл драйвера и
зарегистрировать драйвер, передав его адрес в памяти функции
RegisterBGIdriver. После этого драйвер может непосредственно ис-
пользоваться процедурой InitGraph, а не загружаться с диска моду-
лем Graph. Драйвер пользователя можно загрузить с диска в динами-
чески распределяемую область памяти или преобразовать в файл .OBJ
(с помощью утилиты BINOBJ.EXE), после чего скомпоновать с прог-
раммой в файл .EXE.

Возможной возвращаемой ошибкой является grInvalidDriver (не-
допустимый графический драйвер).

Следующая программа загружает в динамически распределяемую
область памяти драйвер CGA, регистрирует его в графической систе-
ме и вызывает процедуру InitGraph.

program LoadDriv;
uses Graph;
var
Driver, Mode : Integer;
DriverF : file;
DriverP : pointer;
begin
{ открыть файл драйвера, считать его в память и
зарегистрировать }
Assign(DriverF, 'CGA.BGI');
Reset(DriverF, 1);
GetMem(DriverP, FileSize(DriverF));
if RegisterBGIdriver < 0 then
begin
Writeln('Ошибка регистрации драйвера: ',
GraphErrorMSG(GraphResult));
Halt(1);
end;
{ инициализация графики }
Driver := CGA;
Mode := CGAHi;
InitGraph(Driver,Mode,'');

B.Pascal 7 & Objects/PG - 319 -

if GraphResult <> grOk then
Halt(1);
OutText('Драйвер загружен программой пользователя');
Readln;
CloseGraph;
end.

Эта программа начинает работу с загрузки драйвера CGA с дис-
ка и регистрации его с помощью модуля Graph. Затем для инициали-
зации графической системы выполняется обращение к процедуре
InitGraph. Вы можете при желании разместить один или более файлов
непосредственно в файле .EXE. При этом графические драйверы, ко-
торые требуются вашей программе, окажутся встроенными и для рабо-
ты потребуется только файл .EXE. Процесс размещения драйвера в
выполняемом файле довольно прост и заключается в следующем:

1. Выполнить для файла (или файлов) программу BINOBJ.

2. Скомпоновать результирующие файлы *.OBJ с вашей програм-
мой.

3. Перед вызовом процедуры Init зарегистрировать скомпоно-
ванные файлы (файл) драйвера.

Более подробное описание этого процесса можно найти в ком-
ментариях, содержащихся в шапке программы-примера GRLINK.PAS на
диске 3. Документация по утилите BINOBJ содержится в файле
UTILS.DOC на дистрибутивном диске.

Имеется также возможность регистрации в системе файлов шриф-
тов (см. описание функции RegisterBGIfont).

Ограничения: Заметим, что драйвер должен быть зарегистриро-
ван перед обращением к процедуре InitGraph. Если функция
RegisterBGIdriver вызывается, когда средства графики уже активи-
зированы, то возвращается grError.

См. также: InitGraph, InstallUserDriver, RegisterGBIfont.



B.Pascal 7 & Objects/PG - 320 -


Функция RegisterBGIfont модуль Graph
-----------------------------------------------------------------

Назначение: Регистрирует загружаемый пользователем или ском-
понованный с программой шрифт формата BGI (формат фирмы Borland)
в графической системе.

Целевая платформа: Реальный режим. Защищенный режим.

Описание: function RegisterBGIfont(Font: Pointer): Integer;

Примечания: В случае ошибки возвращаемое значение будет
меньше 0. В противном случае возвращается внутренний номер шриф-
та. Эта программа позволяет пользователю загрузить файл шрифта и
"зарегистрировать" шрифт Font, передав его адрес в памяти проце-
дуре RegisterBGIfont. После этого данный шрифт можно выбирать с
помощью обращения к процедуре SetTextStyle. Выбранный шрифт будет
непосредственно использоваться без необходимости загрузки его с
диска модулем Graph. Зарегистрированный пользователем шрифт можно
загрузить с диска в динамически распределяемую область памяти или
преобразовать (с помощью утилиты BINOBJ.EXE) в файл .OBJ, а затем
скомпоновать с программой в выполняемый файл.

Для загрузки и регистрации файлов шрифтов имеется несколько
причин. Во-первых, модуль Graph в каждый момент времени хранит в
памяти только один векторный шрифт. Если у вас имеется программа,
которая должна быстро переключаться с одного шрифта не другой, то
возможно вы предпочтете в начале программы выполнить регистрацию
и загрузку шрифта. При этом при обращении к процедуре
SetTextStyle модулю Graph не понадобится каждый раз загружать и
разгружать шрифт.

Во-вторых, вы можете захотеть разместить файл шрифта непос-
редственно в файле .EXE. Таким образом, файл шрифта, который ис-
пользует ваша программа, окажется встроенным, и для запуска прог-
раммы потребуется только выполняемый файл (файл .EXE). Процесс
размещения файла шрифта в выполняемом файле довольно прост:

1. Выполнить для файла (или файлов) программу BINOBJ.

2. Скомпоновать результирующие файлы ,OBJ с вашей програм-
мой.

3. Перед вызовом процедуры Init зарегистрировать скомпоно-
ванные файлы (файл) драйвера.

Более подробное описание этого процесса можно найти в ком-
ментариях, содержащихся в шапке программы-примера GRLINK.PAS на
диске 3. Документация по утилите BINOBJ содержится в файле
UTILS.DOC на дистрибутивном диске.

Заметим, что в используемый по умолчанию шрифт (с битовой

B.Pascal 7 & Objects/PG - 321 -

матрицей 8х8) встроен в модуль GRAPH.TPU и, таким образом, все
время находится в памяти. При выборе и загрузке векторного шрифта
ваша программа имеет возможность переключаться между используемым
по умолчанию и векторным шрифтом без необходимости перезагружать
какой-либо из них.

Можно также регистрировать файлы драйверов (см. описание
функции RegisterBGIdriver).

Следующая программа загружает в динамически распределяемую
область шрифт Triplex, регистрирует его в графической системе, а
затем предоставляет возможность выбора между этим шрифтом и дру-
гим штриховым шрифтом, который модуль Graph загружает с диска
(SansSerifFont).

program LoadFont;
uses Graph;
var Driver, Mode : integer;
FontF : file;
FontP : pointer;
begin
{ открыть файл шрифта, считать его в память и
зарегистрировать }
Assign(FontF, 'TRIP.CHR');
Reset(FontF, 1);
GetMem(FontP, FontP^, FileSize(FontF));
if RegisterBGIfont(FontP) < 0 then
begin
Writeln('Ошибка регистрации шрифта: ',
GraphErrorMsg(GraphResult));
Halt(1);
end;
{ инициализировать графику }
Driver := Detect;
InitGraph(Driver, Mode, '..\');
if GraphResult < 0 then
Halt(1);
Readln;
{ выбрать зарегистрированный шрифт }
SetTextStyle(TriplexFont, HorizDir, 4);
OutText('Программой загружен шрифт Triplex');
MoveTo(0, TextHeight('a'));
Readln;
{ выбрать шрифт который должен быть загружен с диска }
SetTextStyle(SanSerifFont, HorizDir, 4);
OutText('Диск должен быть готов...');
MoveTo(0, GetY + TextHeight('a'));
Readln;
{ выбрать зарегистрированный шрифт (уже загруженный
в память)}
SetTextStyle(TriplexFont, HorizDir, 4);
OutText('Программой снова выбран шрифт Triplex');
Readln;

B.Pascal 7 & Objects/PG - 322 -

CloseGraph;
end.

Программа начинает свою работу с загрузки с диска шрифта
Triplex и регистрации его модулем Graph. Затем для инициализации
графической системы вызывается процедура InitGraph. Проверьте,
есть ли обращение к диску и нажмите клавишу Enter. Поскольку те-
перь шрифт Triplex уже загружен в память и зарегистрирован, моду-
лю Graph не надо считывать его с диска (таким образом, отпадает
необходимость обращения к дисководу). Затем программа активизиру-
ет шрифт SansSerifFont, загружая его с диска (он не зарегистриро-
ван). Снова нажмите клавишу Enter и посмотрите, есть ли обращение
к диску (при обращении к диску загорается лампочка-индикатор на
панели компьютера). Наконец, программа снова выбирает шрифт
Triplex. Поскольку он уже зарегистрирован, то при этом программа,
когда вы нажмете клавишу Enter, обращаться к диску не будет.

См. также: InitGraph, InstallUserDriver, InstallUserFont,
RegisterGBIfont, SetTextStyle.



B.Pascal 7 & Objects/PG - 323 -


Процедура RemoveDir модуль WinDos
-----------------------------------------------------------------

Назначение: Удаляет пустой подкаталог.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: procedure RemoveDir(Dir: PChar);

Примечания: Удаляется подкаталог по маршруту, заданному па-
раметром Dir. Об ошибках (таких как несуществующий каталог или
непустой каталог) сообщается в переменной DosError.

Пустой подкаталог удаляет также подпрограмма RmDir, но вмес-
то строки с завершающим нулем она воспринимает строку Паскаля.

См. также: GetCurDir, GreateDir, SetCurDir.

Процедура Rename модуль System
-----------------------------------------------------------------

Назначение: Переименовывает внешний файл.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: procedure Rename(var f; NewName);

Примечания: Параметр f представляет собой файловую перемен-
ную, соответствующую любому файловому типу. Параметр NewName яв-
ляется выражением строкового типа или типа PChar (если разрешен
расширенный синтаксис). Внешнему файлу, связанному с переменной
f, присваивается новое имя, заданное параметром NewName. Дальней-
шие операции с f будут выполняться с внешним файлом с новым име-
нем.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

Ограничения: Процедура Rename не должна использоваться для
открытого файла.

См. также: Erase.



B.Pascal 7 & Objects/PG - 324 -


Процедура Reset модуль System
-----------------------------------------------------------------

Назначение: Открывает существующий файл.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: procedure Reset(f [: file; Size : Word ] );

Примечания: Параметр f является файловой переменной, соот-
ветствующей любому типу файла. Он должен быть связан с внешним
файлом с помощью процедуры Assign. Параметр размера Size предс-
тавляет собой необязательное выражение длиной в слово и может
указываться только в том случае, если f является нетипизированным
файлом.

Процедура Reset открывает существующий внешний файл, имя ко-
торого было присвоено f. Если внешний файл с указанным именем от-
сутствует, то это является ошибкой. Если файл f уже открыт, то он
сначала закрывается, а затем открывается вновь. Текущая позиция в
файле устанавливается на начало файла. Если f было присвоено пус-
тое имя (например, Assign(f'')), то после обращения к процедуре
Reset f будет ссылкой на стандартный файл ввода (стандартный ка-
нал 0).

Если f - текстовый файл, то он становится доступным только
по чтению. После обращения к процедуре Reset Eof(f) принимает
значение Truе, если файл пуст, и значение False в противном слу-
чае.

Если f является нетипизированным файлом, то параметр Size
определяет размер записи, который должен использоваться при пере-
даче данных. Если этот параметр опущен, то он подразумевается
равным по умолчанию 128 байтам.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

См. также: Append, Assign, Close, Rewrite.

Пример:

function FileExists(FileName: string) : boolean;
{ булевская функция, возвращающая значение Truе, если файл
существует и значение False в противном случае }
var
f : file;
begin
{$I-}
Assign(f, FileName);

B.Pascal 7 & Objects/PG - 325 -

Reset(f);
Close(f);
{I+}
FileExists := (IOResult = 0) and (FileName <> '');
end; { FileExists };
begin
if FileExists(ParamStr(1)) then { получить из командной
строки имя файла }
Writeln('Файл существует');
else
Writeln('Файл не найден');
end.

Процедура RestoreCrtMode модуль Graph
-----------------------------------------------------------------

Назначение: Возвращает режим экрана в исходное состояние
(то, какое существовало до инициализации графики).

Целевая платформа: Реальный режим. Защищенный режим.

Описание: procedure RestoreCrtMode;

Примечания: Восстанавливает исходный видеорежим, обнаружен-
ный процедурой InitGraph. Данная процедура может использоваться
вместе с процедурой SetGraphMode для переключения между текстовым
и графическим режимом.

Ограничения: Должен использоваться графический режим.

См. также: CloaseGraph, DetectGraph, InitGraph,
SetGraphMode.

Пример:

uses Graph;
var
GraphDriver, GraphMode : integer;
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
if GraphResult <> grOk then
Halt(1);
OutText('Для выхода из графики нажмите Enter:');
Readln;
RestoreCrtMode;
Writeln('Теперь вы в текстовом режиме');
Readln;
SetGraphMode(GetGraphMode);
OutTextXY(0, 0, 'Вы снова в графическом режиме');
OutText(0, TextHeight('H'), 'Для выхода нажмите Enter');
Readln;
CloseGraph;

B.Pascal 7 & Objects/PG - 326 -

end.



B.Pascal 7 & Objects/PG - 327 -


Процедура Rewrite модуль System
-----------------------------------------------------------------

Назначение: Создает и открывает новый файл.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: procedure Rewrite(f [ : file; Size: Word ] );

Примечания: Параметр f является файловой переменной, соот-
ветствующей любому типу файла. Он должен быть связан с внешним
файлом с помощью процедуры Assign. Параметр размера Size предс-
тавляет собой необязательное выражение длиной в слово и может
указываться только в том случае, если f является нетипизированным
файлом. Если этот параметр опущен, то подразумевается размер за-
писи в 128 байт.

Процедура Rewrite создает новый внешний файл, имя которого
присвоено f. Если внешний файл с указанным именем уже существует,
то он удаляется, и на его месте создается новый пустой файл. Если
файл f уже открыт, то он сначала закрывается, а затем открывается
вновь. Текущая позиция в файле устанавливается на начало файла.
Если f было присвоено пустое имя (например, Assign(f,'')), то
после обращения к процедуре Reset(f) будет ссылкой на стандартный
файл ввода (стандартный описатель файла номер 1).

Если f - текстовый файл, то он становится доступным только
по записи. После обращения к процедуре Rewrite Eof(f) принимает
значение Truе, если файл пуст, и значение False в противном слу-
чае.

Если f является нетипизированным файлом, то параметр Size
определяет размер записи, который должен использоваться при пере-
даче данных. Если этот параметр опущен, то он подразумевается
равным по умолчанию 128 байтам.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

См. также: FileMode, Truncate, Lst, Reset, Append, Assign.

B.Pascal 7 & Objects/PG - 328 -


Пример:

{ в Windows используйте WinCrt }
var f : text;
begin
Assign(f,'NEWFILE,$$$');
Writeln(f,'Создается файл, в который записывается эта',
' строка');
Close(f);
end.



B.Pascal 7 & Objects/PG - 329 -


Процедура RmDir модуль System
-----------------------------------------------------------------

Назначение: Удаляет пустой подкаталог.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: procedure RmDir(s: String);

Примечания: Параметр s является выражением строкового типа.
Удаляется подкаталог с путем доступа, заданным строкой s. Если
путь доступа не существует, является непустым или если он задает
текущий каталог, то происходит ошибка ввода-вывода.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

Пустой подкаталог удаляет также подпрограмма RemoveDir, но
вместо строки Паскаля она воспринимает строку с завершающим ну-
лем.

См. также: RemoveDir, MkDir, ChDir, GetDir.

Пример:

{ в Windows используйте WinCrt }
begin
{$I-}
{ получить имя каталога из командной строки }
RmDir(ParamStr(1));
if IOResult <> 0 then
Writeln('Каталог удалить нельзя');
else
Writeln('Каталог удален');
end.



B.Pascal 7 & Objects/PG - 330 -


Функция Round модуль System
-----------------------------------------------------------------

Назначение: Округляет значение вещественного типа до значе-
ния целого типа.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: function Round(x: Real): Longint;

Примечания: Параметр x представляет собой выражение вещест-
венного типа. Функция Round возвращает значение длинного целого
типа, которое является значением x, округленным до ближайшего це-
лого числа. Если значение x находится точно посередине между дву-
мя целыми числами, то результатом будет число с большим абсолют-
ным значением. Если округленное значение x не соответствует
диапазону представления длинного целого типа, то во время выпол-
нения происходит ошибка.

См. также: Trunc, Int.

Процедура RunError модуль System
-----------------------------------------------------------------

Назначение: Останавливает выполнение программы и генерирует
ошибку этапа выполнения.

Целевая платформа: Реальный режим. Защищенный режим,
Windows.

Описание: procedure RunError [ (ErrCode : Word ) ];

Примечания: Процедура RunError аналогична процедуре Halt, но
в дополнение к остановке программы она генерирует на текущем опе-
раторе ошибку этапа выполнения. Параметр ErrCode представляет со-
бой номер ошибки этапа выполнения (0 опущен). Если текущий модуль
был скомпилирован с установленным параметром Debug Information
(Отладочная информация), и вы запускаете программу из среды инте-
рактивной отладки IDE, то Borland Pascal обрабатывает обращение к
RunError, как обычную ошибку этапа выполнения.

См. также: Halt.

Пример:

{$IFDEF Debug}
if P = nil then RunError(204);
{$EDNIF}



B.Pascal 7 & Objects/PG - 331 -


-------------------------------------------------------------
Процедура ScrollTo модуль WinCrt
-----------------------------------------------------------------

Назначение: Прокручивает окно CRT для вывода ячейки вирту-
ального экрана с координатами левого верхнего угла (X,Y).

Целевая платформа: Windows.

Описание: procedure ScrollTo(X, Y: Integer);

Примечания: Ячейка с координатами (0,0) соответствует верх-
нему левому углу виртуального экрана.

Процедура Sector модуль Graph
-----------------------------------------------------------------

Назначение: Вычерчивает и заполняет эллиптический сектор.

Целевая платформа: Реальный режим, защищенный режим.

Целевая платформа: Windows.

Описание: procedure Sector(X, Y: Integer; SStart, SEnd XRad,
YRad: Word);

Примечания: Процедура использует (X,Y) как точку центра, па-
раметры XRad, YRad определяют, соответственно, горизонтальный и
вертикальный радиусы. Сектор вычерчивается от начального угла
SStart до конечного угла SEnd. Сектор рисуется текущим цветом и
закрашивается с использованием образца закраски и цвета, заданных
с помощью процедур SetFillStyle или SetFillPattern.

Если задан начальный угол 0 и конечный угол 360, то будет
нарисован и закрашен полный эллипс. Углы для процедур Arc,
Ellipse, FillEllipse, PieSlice задаются против часовой стрелки,
при этом углу 0 соответствует 3 часа, 90 градусов - 12 часов и т.
д.

Если при заполнении сектора происходит ошибка, то функция
GraphResult возвращает значение grNoScanMem.

Ограничения: Должен использоваться графический режим.

См. также: Arc, Circle, Ellipse, FillEllipse, GetArcCoords,
GetAspectRatio, PieSlice, SetFillStyle, SetFillPattern,
SetGraphBufSize.

Пример:

uses
Graph;
const

B.Pascal 7 & Objects/PG - 332 -

R = 50;
var
Driver, Mode : integer;
Xasp, Yasp : word;
begin
Driver := Detect; { перевести в графический режим }
InitGraph(Driver, Mode, '');
if GraphResult < 0 then
Halt(1);
Sector(GetMaxX div 2, GetMaxY div 2, 0, 45, R, R);
GetAspectRatio(Xasp, Yasp); { нарисовать сектор круга }
Sector(GetMAxX div 2, GetMaxY div 2, { точка центра }
180, 135, { зеркальное отображение выбран-
ного ранее угла }
R, R * LongInt(Xasp) div Yasp);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 333 -


Процедура Seek модуль System
-----------------------------------------------------------------

Назначение: Перемещает текущую позицию в файле к заданному
элементу.

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: procedure Seek(f, n: Longint);

Примечания: Параметр f является любой файловой переменной,
кроме текстовой, а n представляет собой выражение целого типа.
Текущая позиция в файле f перемещается к элементу с номером n.
Номер первого элемента файла равен 0. Для того, чтобы расширить
файл, можно выполнить поиск элемента файла, расположенного за
последним элементом. То есть оператор Sееk(f,FileSize(f)) переме-
щает текущую позицию в файле в конец файла.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

Ограничения: Процедуру нельзя использовать для текстовых
файлов. Файл должен быть открыт.

См. также: FilePos.

Функция SeekEof модуль System
-----------------------------------------------------------------

Назначение: Возвращает для файла состояние "конец файла"
(end-of-file).

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: function SeekEof [ (var f: Text) ]: Boolean;

Примечания: За исключением того, что функция SееkEof пропус-
кает все пробелы, знаки табуляции и метки конца строки, она пол-
ностью соответствует функции Eof. Ее полезно использовать при
считывании числовых значений из текстового файла.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

Ограничения: Функцию можно использовать только для текстовых
файлов. Файл должен быть открыт.

См. также: Eof, SeekEoln.

B.Pascal 7 & Objects/PG - 334 -


Функция SeekEoln модуль System
-----------------------------------------------------------------

Назначение: Возвращает для файла состояние "конец строки"
(end-of-line).

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: function SeekEoln [ (var f : Text) ];

Примечания: За исключением того, что функция SееkEоln про-
пускает все пробелы и знаки табуляции, она полностью соответству-
ет функции Eoln. Ее полезно использовать при считывании из текс-
тового файла числовых значений.

При указании директивы компилятора {$I-} функция IORеsult
будет возвращать значение 0 в том случае, если операция заверши-
лась успешно, и ненулевой код ошибки в противном случае.

Ограничения: Функцию можно использовать только для текстовых
файлов. Файл должен быть открыт.

См. также функции Eoln, SeekEof.

Функция Seg модуль System
-----------------------------------------------------------------

Назначение: Возвращает сегмент для указанного объекта.

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: function Seg(x): Word;

Примечания: Параметр x представляет собой любую переменную
или идентификатор процедуры или функции. Результат длиной в слово
является адресом сегмента для x.

См. также: Ofs, Addr.



B.Pascal 7 & Objects/PG - 335 -


Процедура SetActivePage модуль Graph
-----------------------------------------------------------------

Назначение: Устанавливает для графического вывода активную
страницу.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetActivePage(Page: Word);

Примечания: Страница, заданная параметром Page, становится
активной. Весь графический вывод будет теперь направляться в эту
страницу.

Возможность использования нескольких страниц поддерживается
только в графических адаптерах EGА (256K), VGА и Неrcules. При
использовании нескольких графических страниц программа может вы-
водить графическую информацию в страницу, не выводимую в данный
момент на экран, а затем быстро вывести на экран этот двоичный
образ, сменив отображаемую страницу с помощью процедуры
SetVisualPage. Этот метод особенно полезен при программировании
мультипликации.

Ограничения: Должен использоваться графический режим.

См. также: SetVisualPage.

Пример:

uses Graph;
var
GraphDriver, GraphMode : integer;
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
if GraphResult <> grOk then
Halt(1);
begin
ClearDivice;
SetVisualPage(0);
SetActivePage(1);
Rectangle(10,20,30,40);
SetVisualPage(1);
end;
else
OutText('Страничный режим не поддерживается');
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 336 -


Процедура SetAllPalette модуль Graph
-----------------------------------------------------------------

Назначение: Изменяет все цвета палитры на указанные.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetAllPalette(var Palette);

Примечания: Параметр Palette является нетипизированным пара-
метром. Первое его слово представляет собой длину палитры. Следу-
ющие n байт заменяют текущие цвета палитры. Каждый цвет может
принимать значение от -1 до 15. Значение -1 не изменяет предыду-
щее значение записи.

Имейте в виду, что допустимые цвета зависят от текущего гра-
фического драйвера и текущего графического режима.

При передаче SetAllPalette недопустимого ввода GraphResult
возвращает значение -11 (rgError), и изменений в значении палитры
не происходит.

Изменения, вносимые в палитру, немедленно отображаются на
экране. При любом изменении цвета палитры все места на экране,
где этот цвет используется, будут изменены в соответствии с вновь
заданным значением.

См. описание констант цветов для SetRGBPalette, где вы най-
дете определение констант цветов и записи PaletteType.

Ограничения: Должен использоваться графический режим. Может
использоваться с EGA, EGA64 или VGA (но не с IBM 8514 или VGA с
256-цветным режимом).

См. также: GetBkColor, GetColor, GetPalette, SetBkColor,
SetColor, SetPalette, SetRGBPalette.

B.Pascal 7 & Objects/PG - 337 -


Пример:

uses Graph;
var
GraphDriver, GraphMode : integer;
Palette : PaletteType;
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
if GraphResult <> grOk then
Halt(1);
begin
Line(0, 0, GetMaxX, GetMaxY);
with Palette do
begin
Size := 4;
Colors[0] := LightCyan; { светло-голубой }
Colors[1] := Red; { красный }
Colors[2] := Yellow; { желтый }
Colors[3] := White; { белый }
SetAllPalette(Palette);
end;
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 338 -


Процедура SetAspectRatio модуль Graph
-----------------------------------------------------------------

Назначение: Изменяет принятое по умолчанию значение коэффи-
циента относительного удлинения.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetAspectRatio(Xasp, Yasp: Word);

Примечания: Процедура SetAspectRatio применяется для измене-
ния принятого по умолчанию для текущего графического режима коэф-
фициента относительного удлинения. Коэффициент относительного уд-
линения используется при вычерчивании окружностей. Если окруж-
ность выглядит эллиптической, значит монитор не настроен должным
образом. Его можно настроить с помощью аппaратных средств или
программным путем, изменив с помощью процедуры SetAspectRatio ко-
эффициент относительного удлинения. Для получения текущего коэф-
фициента относительного удлинения можно использовать процедуру
GetAspectRatio.

Ограничения: Должен использоваться графический режим.

См. также: GetAspectRatio.


B.Pascal 7 & Objects/PG - 339 -

Пример:

uses
Crt, Graph;
const
R = 50;
var
Driver, Mode: integer;
Xasp, Yasp: word;
begin
DirectVideo := false;
Driver := Detect; { перевести в графический режим }
InitGraph(Driver, Mode, '');
if GraphResult <> 0 then
Halt(1)
GetAspectRatio(Xasp, Yasp); { получить используемый по
умолчанию коэффициент отно-
сительного удлинения }
{ Настроить на VGA и 8514. При этом коэффициент
относительного удлинения = 1.1 }
if Xasp = Yasp then
Xasp := 5 * Xasp;
{ Продолжить изменение значения коэффициента
относительного удлинения до получения 1:1 или пока
не будет нажата клавиша }
while (Xasp < Yasp) and not KeyPressed do
begin
GetAspectRatio(Xasp, Yasp);
Circle(GatMaxX div 2, GetMaxY div 2, R);
Inc(Xasp, 20);
end;
SetTextJustify(CenterText, CenterText);
OutTextXY(GetMaxX div 2, GetMaxY div 2, 'Выполнено!');
Readln;
CloseGraph;
end.

B.Pascal 7 & Objects/PG - 340 -


Процедура SetBkColor модуль Graph
-----------------------------------------------------------------

Назначение: Используя палитру устанавливает текущий фоновый
цвет.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetBkColor(Color: Word);

Примечания: SetBkColor(0) задает использование первого цвета
палитры в качестве текущего фонового цвета. Фоновые цвета могут
принимать значения в диапазоне от 0 до 15, в зависимости от теку-
щего графического драйвера и текущего графического режима. Для
адаптера CGA данная процедура задает цвет развертки.

Например, в режиме CGAC1 палитра содержит четыре цвета: чер-
ный, красный, желтый и зеленый. SetBkColor(0) выбирает в качестве
фонового цвета черный, значение 1 задает красный цвет и т.д.

Ограничения: Должен использоваться графический режим.

См. также: GetBkColor, GetColor, GetPalette, SetAllPalette,
SetColor, SetPalette.

Пример:

uses Crt, Graph;
var
GraphDriver, GraphMode : integer;
Palette : PaletteType
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
Randomize;
If GraphResult <> grOk then
Halt(1);
GetPalette(Palette);
repeat
SetBkColor(Random(Palette.Size));
LineTo(Random(GetMatX),Random(GetMatY));
until KeyPressed { для выхода нажмите клавишу }
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 341 -


Процедура SetCBreak модуль Dos
-----------------------------------------------------------------

Назначение: Устанавливает проверяемое операционной системой
DOS состояние Ctrl+Break.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetCBreak(Break: Boolean);

Примечания: Данная процедура устанавливает проверяемое DOS
состояние Ctrl+Break. Когда это состояние выключено (False), DOS
проверяет Ctrl+Break только во время выполнения ввода-вывода на
консоль, устройство печати или порты. Во включенном состоянии
(True) проверки выполняются при каждом системном выводе.

См. также: GetCBreak.



B.Pascal 7 & Objects/PG - 342 -


Процедура SetColor модуль Graph
-----------------------------------------------------------------

Назначение: Используя палитру устанавливает текущий цвет ри-
сунка (Color).

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetColor(Color: Word);

Примечания: SetColor(0) задает использование первого цвета
палитры в качестве текущего цвета рисунка. Цвета рисунка могут
принимать значения в диапазоне о 0 до 15, в зависимости от ис-
пользуемого графического драйвера и графического режима.

Наибольший допустимый цвет для текущего драйвера и режима
возвращает подпрограмма GetMaxColor.

Ограничения: Должен использоваться графический режим.

См. также: DrawPoly, SetRGBPalette, GetBkColor, GetColor,
GetPalette, SetAllPalette, GetColor, SetPalette.

Пример:

uses Crt, Graph;
var
GraphDriver, GraphMode : integer;
Palette : PaletteType
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
Randomize;
If GraphResult <> grOk then
Halt(1);
GetPalette(Palette);
repeat
SetBkColor(Random(Palette.Size));
LineTo(Random(GetMatX),Random(GetMatY));
until KeyPressed;
end.



B.Pascal 7 & Objects/PG - 343 -


Процедура SetCurDir модуль WinDos
-----------------------------------------------------------------

Назначение: Изменяет текущий каталог на маршрут, заданный
параметром Dir.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetCurDir(Dir: PChar);

Примечания: Если Dir задает буквенную метку диска, то теку-
щий диск также изменяется. Об ошибках сообщается в DosError.

Те же функции, что и SetCurDir, выполняет подпрограмма
ChDir, но вместо строки с завершающим нулем она воспринимает
строку Паскаля.

См. также: GetCurDir, GreateDir, RemoveDir.

Процедура SetDate модуль Dos
-----------------------------------------------------------------

Назначение: Устанавливает текущую дату в операционной систе-
ме.

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: procedure SetDate(var Y, M, D, Dw: Word);

Примечания: Возвращаемые значения имеют следующие допустимые
диапазоны: Y (год) - 1980..2099, M (месяц) - 1..12, D (число)
1..31, Dw (день недели) - 0..6 (где значение 0 соответствует
воскресенью). Если дата указана неверно, то запрос игнорируется.

См. также: GetDate, GetTime, SetTime.



B.Pascal 7 & Objects/PG - 344 -


Процедура SetFAttr модуль Dos
-----------------------------------------------------------------

Назначение: Возвращает атрибуты файла.

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: procedure SetAttr(var f; Attr: Word);

Примечания: Параметр f должен представлять собой файловую
переменную (соответствующую типизированному, нетипизированному
или текстовому файлу) для которого должно быть выполнено присваи-
вание файловой переменой, но который не должен быть открыт. Фор-
мирование атрибутов выполняется путем добавления соответствующих
масок, заданных в виде констант в модуле Dos (см. константы атри-
бутов файла).

Коды ошибок можно получить с помощью функции DosError. Воз-
можными кодами ошибок являются код 3 (недопустимый маршрут) и код
5 (доступ к файлу запрещен).

Ограничения: Файл не может быть открыт.

См. также: GetFAttr, GetFTime, SetFTime.

Пример:

{ в Windows используйте модуль WinCrt }
uses Dos;
var
f : file;
begin
Assign(f,'C:\AUTOEXEC.BAT');
SetFAttr(f, Hidden); { или faHidden под Windows }
Readln;
SetFAttr(f, Archive); { или faArchive под Windows }
end.



B.Pascal 7 & Objects/PG - 345 -


Процедура SetFillPattern модуль Graph
-----------------------------------------------------------------

Назначение: Выбирает заданный пользователем образец закрас-
ки.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetFillPattern(Pattern: FillPatternType;
Color: Word);

Примечания: Устанавливает тип закраски и ее цвет для всех
типов закраски, выполняемых процедурами FillPoly, Bar, FloodFill,
Bar3D и PieSlice, битовый образец закраски, задаваемый процедурой
Pattern, и цвет, задаваемый процедурой Color. Тип FillPatternType
определен в модуле Graph.

Образец закраски основывается на внутренних байтовых значе-
ниях, содержащихся в массиве Pattern. Этот массив имеет длину 8
байт, и каждый байт соответствует 8 элементам изображения в об-
разце закраски. Если бит в байте образца закраски принимает зна-
чение 1, то элемент изображения будет построен. Следующий образец
закраски представляет собой, например, закраску в виде "шахматной
доски" (50% полутон):

----------------------------------------------------------------¬
¦ Двоичный вид Шестнадцатиричный вид ¦
+---------------------------------------------------------------+
¦ 10101010 = $AA (первый байт) ¦
¦ 01010101 = $55 (второй байт) ¦
¦ 10101010 = $AA (третий байт) ¦
¦ 01010101 = $55 (четвертый байт) ¦
¦ 10101010 = $AA (пятый байт) ¦
¦ 01010101 = $55 (шестой байт) ¦
¦ 10101010 = $AA (седьмой байт) ¦
¦ 01010101 = $55 (восьмой байт) ¦
L----------------------------------------------------------------

Определенные пользователем типы закраски позволяют вам соз-
давать типы закраски, отличающиеся от заранее определенных, кото-
рые могут выбираться с помощью процедуры SetFillStyle. Всякий
раз, когда вы выбираете новый образец закраски с помощью процедур
SetFillPattern или SetFillStyle все операции закраски будут вы-
полняться с использованием этого типа закраски. При обращении ви-
да SetFillStyle(UserField, SomeColor) всегда будет выбираться об-
разец, заданный пользователем. Это позволяет вам определять и
использовать с помощью процедуры SetFillPattern новый образец
закраски, а затем переходить от встроенного образца закраски к
новому, заданному вами, обращаясь к процедуре YetTextStyle.

Ограничения: Должен использоваться графический режим.


B.Pascal 7 & Objects/PG - 346 -

См. также: Bar, Bar3D, FillPoly, GetFillPattern,
GetFillSettings GraphResult, константы grXXXX, PieSlice.

Пример:

uses Graph;
const
Gray50 : FillPatternType = ($AA, $55, $AA, $55, $AA, $55,
$AA, $55);
var
Driver, Mode: integer;
begin
Driver := Detect; { перевести в графический режим }
InitGraph(Driver, Mode, '');
if GraphResult <> 0 then
Halt(1)
SetFillPattern(Gray50, White);
Bar(0, 0, 100, 100); { нарисовать столбец, используя 50%
полутон }
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 347 -


Процедура SetFillStyle модуль Graph
-----------------------------------------------------------------

Назначение: Устанавливает тип закраски и ее цвет.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetFillStyle(Pattern: Word; Color:
Word);

Примечания: Устанавливает образец Pattern и цвет Color зак-
раски для всех видов закраски, выполняемых процедурами FillPoly,
Bar, Bar3D, и PieSlice. Можно использовать множество типов зак-
раски. По умолчанию выбирается сплошная закраска белого цвета.
См. определение констант образцов закраски.

Если процедуре SetFillStyle передан недопустимый ввод, то
GraphResult возвращает значение grError, а текущая закраска не
изменяется. Если Pattern равно UserFill, то активным образцом
закраски становится образец, определенный пользователем (с по-
мощью подпрограммы SetFillPattern).

Ограничения: Должен использоваться графический режим.

См. также: Bar, Bar3D, FillPoly, FillPatternType,
GetFillSettings, PieSlice, GetMaxColor, GraphResult.

Пример:

SetFillStyle(SolidFill,0);
Bar(x1, y1, x2, y2);
SetFillStyle(XHatchFill,0);
Bar(x1, y1, x2, y2);



B.Pascal 7 & Objects/PG - 348 -


Процедура SetFTime модуль Dos, WinDos
-----------------------------------------------------------------

Назначение: Устанавливает дату и время последней записи фай-
ла.

Целевая платформа: Реальный режим, защищенный режим,
Windows.

Описание: procedure SetTime(var f; Time: Longint);

Примечания: Параметр f должен быть файловой переменной, со-
ответствующей типизированному, нетипизированному или текстовому
файлу. Параметр времени Time можно сформировать с помощью обраще-
ния к процедуре РасkТiме. Ошибки можно получить с помощью функции
DosError. Единственно возможным кодом ошибки является код 6 (не-
допустимый файловый канал).

Ограничения: Файл f должен быть открыт.

См. также: DosError, GetFTime, PackTime, UnPackTime,
SetFAttr.

Процедура SetGraphMode модуль Graph
-----------------------------------------------------------------

Назначение: Позволяет вам изменить размер буфера, используе-
мого для закраски.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetGraphBufSise(BufSize: Word);

Примечания: Для внутреннего буфера устанавливается размер,
соответствующий параметру BufSize. Этот буфер выделяется в дина-
мически распределяемой области памяти при обращении к процедуре
InitGraph.

По умолчанию буфер имеет размер 4К. Этого достаточно для за-
полнения многоугольника штриховкой примерно из 650 линий. В неко-
торых достаточно редких ситуациях может потребоваться изменить
размеры буфера, чтобы избежать его переполнения.

Ограничения: Если обращение к процедуре InitGraph уже было,
то вызов процедуры SetGraphBufSize игнорируется.

См. также: FloodFill, FillPoly, InitGraph.



B.Pascal 7 & Objects/PG - 349 -


Процедура SetGraphMode модуль Graph
-----------------------------------------------------------------

Назначение: Устанавливает для системы графический режим и
очищает экран.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetGraphMode(Mode: Integer);

Примечания: Параметр Mode должен задавать для текущего драй-
вера устройства допустимый графический режим. Данная процедура
используется для выбора графического режима, отличного от того,
который по умолчанию устанавливается процедурой InitGraph.

Процедура SetGraphMode может также использоваться вместе с
процедурой RestoreCrtMode для переключения между текстовым и гра-
фическим режимами.

Процедура SetGraphMode сбрасывает все графические параметры
(текущий указатель, палитру, цвет, область просмотра и т.д.) в те
значения, которые назначаются для них по умолчанию.

Если делается попытка выбрать для текущего драйвера устройс-
тва недопустимый режим, то функция GraphResult возвращает значе-
ние -10 (grInvalidMode).

См. описание констант драйвера и режима, а также список
драйверов и режимов.

Ограничения: Перед обращением к данной процедуре необходимо
выполнить (с нормальным завершением) вызов процедуры InitGraph.

См. также: ClearDevice, CloseGraph, DetectGraph,
GetGraphMode, InitGraph, RestoreCrtMode, GraphResult,
GetModeRange, константы драйвера и режима.

Пример:

uses Graph;
var
GraphDriver : integer;
GraphMode : integer;
LowMode : integer;
HighMode : integer;
begin
GraphDriver := Detect;
InitGraph(GraphDriver, GraphMode, '');
if GraphResult <> grOk then
Halt(1);
GetModeRange(GraphDriver, LowMode, HighMode);
SetGraphMode(LowMode); { выбрать режим с низким

B.Pascal 7 & Objects/PG - 350 -

разрешением }
Line(0, 0, GetMaxX, GetMaxY);
Readln;
CloseGraph;
end.

Процедура SetIntVec модуль Dos, WinDos
-----------------------------------------------------------------

Назначение: Устанавливает по указанному адресу заданный век-
тор прерывания.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetIntVec(IntNum: Byte; Vec: Pointer);

Примечания: Параметр IntNum задает номер вектора прерывания
(0...255), а параметр Vec задает его адрес. Чтобы получить адрес
процедуры обработки, прерываний параметр Vec часто задается с ис-
пользованием оператора @. Предположим, что Int1BSave является пе-
ременной типа указатель и Int1BHandler - идентификатор процедуры
обработки прерываний. Тогда следующая последовательность операто-
ров задает новый обработчик прерывания $В1, а затем восстанавли-
вает исходный обработчик прерывания:

GetIntVec($1B,Int1BSave);
SetIntVec($1b,@Int1BHandler);
.
.
.
SetIntVec($1B,Int1BSave);

Ограничения: В защищенном режиме DOS, а также в стандартном
и улучшенном режимах Windows SetIntVec устанавливает вектор пре-
рывания защищенного режима с заданным номером вектора прерывания.
SetIntVec нельзя использовать для модификации векторов прерываний
реального режима или векторов исключительных ситуаций защищенного
режима.

См. также: GetIntVec.



B.Pascal 7 & Objects/PG - 351 -


Процедура SetLineStyle модуль Graph
-----------------------------------------------------------------

Назначение: Устанавливает текущую толщину S и тип линии
SType.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetLineStyle(SType: Word; Pattern: Word;
S: Word);

Примечания: Данная процедура влияет на все типы линий, вы-
черчиваемые процедурами Line, LineTo, RecTangle, DrawPoly, Arc,
Circle и др. Могут вычерчиваться непрерывные, пунктирные линии,
линии, состоящие из точек или точек и тире. Если процедуре
SetLineStyle передаются неверные параметры, то GraphResult будет
возвращать значение grError и текущие установки останутся неизме-
ненными. См. константы типов линий. SType - это значение от
SolidLn до IserBitLn(0..4). Если SType не равно UserBitLn,
Pattern игнорируется. S - это NormWidth или ThickWidth. Когда
SType равно UserBitLn, линия выводится с помощью 16-битового об-
разца, определенного параметром Pattern. Например, если Pattern =
$AAAA, то 16-битовый образец выглядит следующим образом

1010101010101010 { NormWidth }

1010101010101010 { ThickWidth }
1010101010101010
1010101010101010

Ограничения: Должен использоваться графический режим.

См. также: SetLineStyle, Line, LineRel, LineTo,
SetWriteMode, GraphResult.

B.Pascal 7 & Objects/PG - 352 -


Пример:

uses Graph;
var
GraphDriver, GraphMode : integer;
x1, y1, x2, y2 : integer;
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
if GraphResult <> grOk then
Halt(1);
x1 := 10;
y1 := 10;
x2 := 200;
y2 := 150;
SetLineStyle(DottedLn,0,NormVidth);
Rectangle(x1,y1,x2,y2);
SetLineStyle(UserBitLn,$C3,ThickWidth);
Rectangle(Pred(x1), Pred(y1), Succ(x2), Succ(y2));
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 353 -


Процедура SetPalette модуль Graph
-----------------------------------------------------------------

Назначение: Изменяет один из цветов палитры в соответствии с
параметрами N (номер цвета) и Color (цвет).

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetPalette(N: Word; Color: Shortint);

Примечания: Изменяет в палитре запись N на Color. SetPalette
(0,LightCyan) устанавливает в качестве первого цвета палитры
светло-бирюзовый. В зависимости от текущего графического драйвера
и текущего графического режима параметр N может принимать значе-
ния от 0 до 15. При передаче SetPalette недопустимого ввода
GraphResult возвращает значение grError.

Внесенные в палитру изменения немедленно отображаются на эк-
ране. В приведенном далее примере на экране рисуется несколько
линий, затем палитра случайным образом изменяется. Каждый раз,
когда изменяется цвет палитры, все места на экране, где использу-
ется данный цвет, будут изменяться в соответствии с новым значе-
нием.

Ограничения: Должен использоваться графический режим. Может
применяться только с EGA, EGA 64 или EGA (но не с IBM 8514).

См. также: GetBkColor, GetColor, SetAllPalette, SetBkColor,
SetColor, SetRGBPalette, GraphResult.

Пример:

uses Crt, Graph; var
Graphriver, GraphMode : integer;
Color : word;
Palette : PaletteType;
begin
GraphDriver := Detect;
InitGraph(GraphDriver, GraphMode,'');
if GraphResult <> grOk then
Halt(1);
SetPalette(Palette);
for Color := 0 to Pred(Palette.Size) do
begin
SetColor(Color);
Line(Color, Color, Color*5, Color*5);
end;
Randomize;
repeat;
SetPalette(Random(Palette.Size),
Random(Palette.Size));
until KeyPressed;

B.Pascal 7 & Objects/PG - 354 -

end;
else
Line(0, 0, 100, 0);
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 355 -


Функция SetPrnFont модуль WinPrn
-----------------------------------------------------------------

Назначение: Начинает печать, используя выбранный шрифт.

Целевая платформа: Windows.

Описание: function SetPrnFont(var F: Text; Font: HFont):
HFont;

Примечания: Функция SetPrnFont вызывает печать файла с ис-
пользованием данного шрифта. Возвращается описатель шрифта, ис-
пользуемого в данный момент принтером. Если возвращаемый описа-
тель не предполагается использовать далее в программе, то его
можно уничтожить, вызвав подпрограмму DeleteObject. Описатель
шрифта можно создать с помощью функций API Windows CreateFont или
CreateFontIndirect.

Пример:

program Test;
uses WinTypes, WinProcs, WinCrt, WinPrn;
Prn: Text;
OldFont: HFont;
begin
Writeln(' Печать... ');
AssingDefPrn(Prn);
Rewrite(Prn);
Writeln(Prn, 'Некоторый текст');
OldFont := SetPrnFont(Prn, CreateFont(100, 0, 0, 0, 0, 0,
0, 1, Old_Default_Precis, Clip_Default_Precis,
Default_Quality, ff_Roman, nil);
Writeln(Prn, 'Некоторый текст новым шрифтом');
DeleteObject(SetPrnFont(Prn, OldFont));
Writeln(Prn, 'Снова старый шрифт');
Close(Prn);
Writeln('Выполнено');
end.

См. также: AbortPrn, AssingDefPrn, AssingPrn, TitlePrn.



B.Pascal 7 & Objects/PG - 356 -


Процедура SetRGBPalette модуль Graph
-----------------------------------------------------------------

Назначение: Позволяет изменить записи палитры для драйверов
IBM 8514 и VGA.

Целевая платформа: Реальный режим, защищенный режим.

Описание: procedure SetRGBPalette(N, RedVavue, GreenValue,
BlueValue: Integer);

Примечания: Параметр N задает запись палитры, которую нужно
загрузить, а RedValue, GreenValue и BlueValue - цвета, составляю-
щие запись палитры.

Для дисплея IBM 8514 N принимает значения в диапазоне
0..255. Для VGA в цветном режиме и 256К N (номер цвета) принимает
значения в диапазоне 0..15. Используется только младший байт
RedValue, GreenValue и BlueValue и только 6 старших бит этого
байта загружаются в палитру.

Замечание: В целях совместимости с другими графическими
адаптерами фирмы IBM драйвер BGI определяет первые 16 записей па-
литры IBM 8514 для адаптеров EGA/VGA. Эти значения могут исполь-
зоваться непосредственно или изменяться с помощью процедуры
SetRGBPalette.

Ограничения: Процедура SetGRBPalette может использоваться
только при наличии графического адаптера VGA и драйвера IBM 8514.

См. также: SetBkColopr, GetColor, GetPalette, GraphResult,
SetAllPalette, SetBkColor, SetColor, SetPalette.

Пример:

uses Graph;
type
GRBRec = record
RedVal, GreenVal, BlueVal : integer;
end;
const
EGAColors : array[0..MaxColors] of
GRBRec =( { Назв. Цвет }
(RedVal:$00;GreenVal:$00;BlueVal:$00), {черный EGA 0}
(RedVal:$00;GreenVal:$00;BlueVal:$FC), {голуб. EGA 1}
(RedVal:$24;GreenVal:$FC;BlueVal:$24), {зелен. EGA 2}
(RedVal:$00;GreenVal:$FC;BlueVal:$FC), {бирюз. EGA 3}
(RedVal:$FC;GreenVal:$14;BlueVal:$14), {красн. EGA 4}
(RedVal:$B0;GreenVal:$00;BlueVal:$FC), {малин. EGA 5}
(RedVal:$70;GreenVal:$48;BlueVal:$FC), {корич. EGA 20}
(RedVal:$C4;GreenVal:$C4;BlueVal:$C4), {белый EGA 7 }
(RedVal:$34;GreenVal:$34;BlueVal:$34), {серый EGA 56}

B.Pascal 7 & Objects/PG - 357 -

(RedVal:$00;GreenVal:$00;BlueVal:$70), {св.гол.EGA 57}
(RedVal:$00;GreenVal:$70;BlueVal:$00), {св.зел.EGA 58}
(RedVal:$00;GreenVal:$70;BlueVal:$70), {св.бир.EGA 59}
(RedVal:$70;GreenVal:$00;BlueVal:$00), {св.кр. EGA 60}
(RedVal:$70;GreenVal:$00;BlueVal:$70), {св.мал.EGA 61}
(RedVal:$FC;GreenVal:$FC;BlueVal:$24), {желтый EGA 62}
(RedVal:$FC;GreenVal:$FC;BlueVal:$FC), {я.белыйEGA 63}
);
var
Driver, Mode,
i : integer;
begin
Driver := IBM8514; { отменить автообнаружение }
Mode := IBM8514Hi;
InitGraph(Driver, Mode, ''); { перевести в
графический режим }
if GraphResult < 0 then
Halt(1);
{ нулевая палитра, весь графический вывод невидим }
for i := 0 to MaxColors do
with EGAColors[i] do
SetRGBPalette(i, 0, 0, 0);
{ вывести что-нибудь на экран }
{ изменить первый 16 записей палитры для 8514 }
for i := 1 to MaxColors do
begin
SetColor(i);
OutText(10, i*10, '...Нажмите любую клавишу..');
end;
{ восстановить принятые по умолчанию цвета EGA в
палитру 8514 }
for i := 0 to MaxColors do
with EGAColors[i] do
SetRGBPalette(i, RedVal, GreenVal, BlueVal);
Readln;
CloseGraph;
end.

B.Pascal 7 & Objects/PG - 358 -


Функция SetSelectorBase модуль WinAPI
-----------------------------------------------------------------

Назначение: Устанавливает базовый адрес селектора.

Целевая платформа: Защищенный режим, Windows.

Описание: function SetSelectorBase(Selector: Word; Base:
Longint): Word;

Примечания: Устанавливает базовый адрес селектора, заданный
параметром Selector, для линейного адреса, заданного параметром
Base. При успешном выполнении функции возвращаемое значение равно
Selector, в противном случае - нулю.

См. также: GetSelectorBase, GetSelectorLimit,
SetSelectorLimit.

Функция SetSelectorLimit модуль WinAPI
-----------------------------------------------------------------

Назначение: Устанавливает предельное значение селектора.

Целевая платформа: Защищенный режим, Windows.

Описание: function SetSelectorLimit(Selector: Word; Base:
Longint): Word;

Примечания: Устанавливает предельное значение селектора, за-
данного параметром Selector, в значение, заданное параметром
Limit. В стандартном режиме Windows и в защищенном режиме DOS за-
даваемое Limit значение не должно превышать $10000 (64K). Возвра-
щаемое значение всегда равно 0.

См. также: GetSelectorBase, GetSelectorLimit,
SetSelectorBase.



B.Pascal 7 & Objects/PG - 359 -


Процедура SetTextBuf модуль System
-----------------------------------------------------------------

Назначение: Назначает для текстового файла буфер ввода-выво-
да.

Целевая платформа: Защищенный режим, реальный режим,
Windows.

Описание: procedure SetTextBuf(var f: Text; var Buf [ ;
Size: Word]);

Примечания: Параметр f представляет собой файловую перемен-
ную, соответствующую текстовому файлу. Параметр Buf (буфер) - лю-
бая переменная, а параметр Size (размер) - необязательное выраже-
ние длиной в слово.

Каждая файловая переменная для текстового файла имеет внут-
ренний буфер размером в 128 байт, который по умолчанию использу-
ется для буферизации операций чтения и записи. Этот буфер подхо-
дит для использования во многих прикладных задачах, однако прог-
раммы, выполняющие значительное количество операций ввода-вывода
(например, задачи, осуществляющие копирование или преобразование
текстовых файлов) будут лучше работать с буфером большего разме-
ра, поскольку это уменьшает перемещение головки по поверхности
диска и избыточное использование файловой системы.

Процедура SetTextBuf переназначает буфер, используемый для
текстового файла f: вместо внутреннего буфера файла f использует-
ся буфер, заданный параметром Buf. Параметр Size задает размер
буфера в байтах. Если этот параметр опущен, то подразумевается
использование SizeOf(Buf), то есть по умолчанию в качестве буфера
используется вся область памяти, занятая буфером. Новый буфер
действует до тех пор, пока для f вновь не выполняется процедура
Assign.

Ограничения: Данная процедура никогда не должна применяться
для открытого файла, хотя вызывать ее можно немедленно вслед за
обращением к процедурам Reset, Rewrite и Appеnd. Вызов процедуры
SetTextBuf для открытого файла во время выполнения операций вво-
да-вывода может из-за смены буфера привести к потере данных.

Borland Pascal не обеспечивает существования буфера на все
время выполнения операций ввода-вывода для файла. Общей ошибкой,
в частности, является введение в качестве буфера локальной пере-
менной и затем использование файла вне процедуры, в которой опи-
сывается буфер.

Пример:

{ в Windows используйте модуль WinCrt }
var

B.Pascal 7 & Objects/PG - 360 -

f : text;
ch : char;
buf : char; { буфер 10 К }
begin
{ назначить для файла считывание из командной строки }
Assign(f, ParamStr(1));
{ ввести для более быстрого чтения буфер большего
размера }
SetTextBuffer(f, buf);
Reset(f);
{ вывести текстовый файл на экран }
while not Eof(f) do
begin
Read(f, ch);
Write(ch);
end;
end.



B.Pascal 7 & Objects/PG - 361 -


Процедура SetTextJustify модуль Graph
-----------------------------------------------------------------

Назначение: Устанавливает значения выравнивания текста, ко-
торые используются процедурами OutText и OutTextXY.

Целевая платформа: Защищенный режим, реальный режим.

Описание: procedure SetTextJustify(Goriz, Vert: Word);

Примечания: После процедуры SetTextJustify вывод текста бу-
дет выравниваться по текущему указателю заданным способом. При
использовании двух следующих операторов:

SetTextJustify(CenterText, CenterText);
OutTextXY(100, 100, 'ABC');

в середине точки с координатами (100,100) появится буква B. Уста-
новленные по умолчанию параметры выравнивания можно восстановить
с помощью вызова SetTextJustify(LeftText,TopText). Если процедуре
SetTextJustify передаются недопустимые параметры, функция
GraphResult будет возвращать значение -11 (grError), а текущие
параметры выравнивания текста останутся неизмененными. См. описа-
ние констант выравнивания.

Ограничения: Должен использоваться графический режим.

См. также: SetLineStyle, OutTextXY, GetTextSettings,
OutText, TextHeight, TextWidth, SetUserCharSize, GraphResult.

Пример:

uses Graph;
var
Gd, Gm : integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
{ выравнивание текста относительно центра экрана }
SetTextJustify(CenterText, CenterText);
OutTextXY(Succ(GetMaxX) div 2,
Succ(GetMaxY) div 2,
'Легко центрируется');
ReadLn;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 362 -


Процедура SetTextStyle модуль Graph
-----------------------------------------------------------------

Назначение: Устанавливает текущий шрифт Font, тип S и коэф-
фициент размера символа Size.

Целевая платформа: Защищенный режим, реальный режим.

Описание: procedure SetTextStyle(Font: word; S: word; Size:
CharSizeType);

Примечания: Процедура влияет на весь текстовый вывод, выпол-
няемый процедурами OutText и OutTextXY. Можно использовать один
шрифт с двоичным образом 8х8 и несколько векторных шрифтов. Под-
держивается нормальное (слева направо) расположение шрифта и вер-
тикальное (развернутое на 90 градусов относительно нормального
расположения), при котором текст начинается с нижней границы эк-
рана и продолжается вверх. Размер каждого символа может увеличи-
ваться на коэффициент, задаваемый параметром Size. Значение раз-
мера символа, равное единице, приводит к выводу двоичного образа
шрифта 8х8 в прямоугольную область экрана, содержащую 8х8 элемен-
тов изображения, параметр Size, равный 2 приведет к выводу на эк-
ран двоичного образа шрифта 8х8 в прямоугольную область элементов
изображения размером 16х16 и т. д. (вплоть до десятикратного уве-
личения нормального размера). Для определения действительных раз-
меров шрифта всегда используйте процедуры TextHeight и TextWidth.

Нормальными значениями размера для шрифта являются 1 для
принятого по умолчанию шрифта и 4 для векторного шрифта. Эти зна-
чения можно передавать процедуре SetTextStyle в параметра Size.
Для настройки размера векторного текстового шрифта можно исполь-
зовать процедуру SetUserFont.

Обычно векторные шрифты при обращении к процедуре
SetTextStyle шрифты загружаются с диска в динамически распределя-
емую область памяти. Однако, вы сами можете загрузить шрифты или
скомпоновать их непосредственно с вашим файлом .EXE. В этом слу-
чае для регистрации шрифта модулем Graph используйте процедуру
RegisterBGIfont.

Когда векторные шрифты хранятся на диске, при попытке их
загрузки могут происходить ошибки. При наличии ошибок функция
GraphResult возвращает одно из следующих значений: grFontMem,
grNoFontMem, grError, rgIOError, rgInvalidFont или
grInvalidFontNum.

Ограничения: Должен использоваться графический режим.

См. также: SetTextJustify, TextHeight, SetTextSettings,
TextWidth, GetTextSettings, RegisterBGIfont, GraphResult,
SetUserCharSize.


B.Pascal 7 & Objects/PG - 363 -

Пример:

uses Graph;
var
Gd, Gm : integer;
Y, Size : integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
Y := 0;
for Size := 1 to 4 do
begin
SetTextStyle(DefaultFont, HorizDir, Size);
OutText(1,y,'Размер = '+Chr(Size+48));
Inc(Y, TextHeight('H') + 1);
end;
Readln;
CloseGraph;
end.



B.Pascal 7 & Objects/PG - 364 -


Процедура SetTime модуль Dos
-----------------------------------------------------------------

Назначение: Устанавливает в операционной системе текущее
время