TestPrinter (рис. 17.3)
Функция возвращает код состояния принтера LPT1 (PRN)
PrintFile (рис. 17.3)
Процедура печати файла на принтере, подключенном к LPT1, с анализом состояния принтера.
PROGRAM (рис. 17.4)
Резидентная программа перенаправления потоков печати {558}
Глава 18. Модуль Overlay
PROGRAM (рис. 18.2)
Пример блока обработки ошибок при работе с оверлеями
Глава 19. Модуль Graph
CopyToPRN (рис. 19.27)
Процедура получения твердой копии изображения, полученного на экране в графическом режиме, на принтерах типа EPSON FX
PROGRAM (рис. 19.29)
Программа-каркас моделирования движения бильярдного шара, использующая свойство режима XOR вывода изображения
PROGRAM (рис. 19.30)
Программа-каркас, использующая покадровый алгоритм движения изображения (только для адаптеров EGA и VGA)
LoadFont (рис. 19.32)
Процедура связывания файла внешнего шрифта с паскаль-программой
LoadFont8x8 (рис. 19.33)
Процедура замены системного шрифта DefaultFont на внешний, сконструированный в матрицах 8x8
UNIT BGI (рис. 19.36)
Модуль, составленный для включения всех BGI-драйверов и CHR-шрифтов (в том числе и собственных) в ЕХЕ-файл
Глава 20. Профессиональная работа с текстовыми изображениями
GetScreenPtr (рис. 20.1)
Функция, выдающая адрес видеопамяти в режиме текста
CurrentMode (рис. 20.2)
Функция, выдающая номер текущего текстового режима
Font8x8YES (рис. 20.2)
Функция, выдающая True, если включен режим Font8x8
GetScreenSize (рис. 20.2)
Функция, выдающая длину видеопамяти в текущем режиме
GetColNum, GetRowNum (рис. 20.2)
Функции, выдающие текущие число столбцов и строк
FillArea (рис. 20.5)
Процедура заполнения прямоугольной области экрана символом в заданном цветовом атрибуте
ChangeAttr (рис. 20.5)
Процедура переназначения цветового атрибута прямоугольной области экрана
PROGRAM (рис. 20.7)
Пример, ведения системы окон с помощью средств модуля Win
SaveCurrentScreenOnDisk, LoadScreenFromDisk (рис. 20.8)
Процедура сохранения текущего текст-экрана на диске и его чтения
WriteChar (рис. 20.11)
Процедура вывода символа в виде изображения размером 8x8 позиций {559}
WriteLargeString (рис. 20.11)
Процедура изображения строки большими буквами
SetCursorSize (рис. 20.13)
Процедура установки формы текстового курсора
SetNormalCursor, SetBlockCursor, SetNoCursor (рис. 20.13)
Процедуры установки нормальной, блочной и невидимой формы
Глава 21. Как осуществить полный доступ к клавиатуре
ClrKeyBuf (рис. 21.1)
Процедура очистки буфера клавиатуры
Wait (рис. 21.2)
Процедура ожидания нажатия на клавиатуре
GetLockKey, SetLockKey (рис. 21.9)
Функция, анализирующая состояние режима xxLock и процедура управления им
UnReadKey (рис. 21.12)
Процедура, возвращающая в буфер клавиатуры значение, содержащее ASCII-код алфавитной клавиши
UnReadExtCode (рис. 21.12)
Процедура, возвращающая в буфер клавиатуры значение, содержащее расширенный код функциональной клавиши или алфавитной в режиме Alt
UnReadString (рис. 21.12)
Процедура помещения в буфер строки (до 16 символов)
Глава 22. Работа с оперативной памятью видеоадаптеров
WriteSym (рис. 22.9)
Процедура вывода символа заданного цвета на графический экран шрифтом текстового режима
WriteStr (рис. 22.10)
Процедура вывода строки на графический экран шрифтом текстового режима (только EGA и VGA)
SaveScreen (рис. 22.11)
Процедура записи на диск картинки с экрана, не превышающего размер 640x200 при 16 цветах
LoadScreen (рис. 22.12)
Процедура вывода на экран картинки, записанной на диск. Максимальный размер — весь экран в режиме 640x200 при 16 цветах
SaveBitPlanes, LoadBitPlanes (рис. 22.13)
Процедуры сохранения изображения всего экрана на диске и считывания его
SaveCGAScr, LoadCGAScr (рис. 22.14)
Процедуры сохранения изображения всего экрана на диске и его чтения для CGA-адаптеров {560}
Индекс
В индексе представлены зарезервированные слова (записаны прописными буквами) и предопределенные идентификаторы языка Турбо Паскаль. После идентификатора стоит имя вводящего его модуля и буква, обозначающая его сущность: t — тип (type), с — константа (const), v — переменная (var), p — процедура (procedure), f — функция (function).
$
$DEFINE 57–58
$ELSE 57–59, 181, 183
$ENDIF 57–59
$IFDEF 57–59, 181
$IFNDEF 57–58
$IFOPT 57, 59, 183
$UNDEF 57, 59
A
AbsSystem.f 77, 175
ABSOLUTE 79–82, 292
Addr System.f 190–192, 197, 307
AND 77, 162, 166, 171–172
AndPut Graph.c 419, 452
AnyFile DOS.c 357
Append System.p 231, 235, 267–268
Arc Graph.p 406, 428–429, 439
ArcCoordsType Graph.t 429
Archive DOS.c 357
ArcTan System.f 175, 177
ARRAY 61, 69, 132–133
Assign System.p 221, 225–226, 268
AssignCRT CRT.p 315, 326, 343–344
ATT400 Graph.c 407, 413
ATT400Cx Graph.c 413
ATT400Hi Graph.c 413
ATT400Med Graph.c 413
В
Bar Graph.p 406, 439, 458
Bar3D Graph.p 406, 439
BEGIN 53, 93–94
BkSlashFill Graph.c 437
Black CRT.c 337, 438
Black Graph.c 441–442
Blink CRT.c 337, 442
BlockRead System.p 250–252, 267–268
BlockWrite System.p 250–252, 267–268
Blue CRT.c 337
Blue Graph.c 441–442
Boolean System.t 61, 64–66, 171, 241–242
BottomText Graph.c 464
Brown CRT.c 337
Brown Graph.c 441–442
BW40 CRT.c 329–330
BW80 CRT.c 329
Byte System.t 61–62, 65, 142, 164
С
C80 CRT.c 329
CASE 96–98, 138
CenterLn Graph.c 424
CenterText Graph.c 464
CGA Graph.c 407, 412
CGACx Graph.c 412
CGAHi Graph.c 412, 443
Char System.t 61, 64–65, 148–152
ChDir System.p 260–261, 267
CheckBreak CRT.v 320–322
CheckEOF CRT.v 319–320, 322–323
CheckSnow CRT.v 320–321, 331
Chr System.f 77, 152
Circle Graph. p 406, 427
ClearDevice Graph.p 406, 417, 423 ClearViewPort Graph.p 406, 423, 458 {561}
ClipOff Graph.c 456–458
ClipOnGraph.c 456–458
Close System.p 225–228, 263, 268
CloseDotFill Graph.c 437
CloseGraph Graph.p 405–406, 408
ClrEOL CRT.p 326, 334
ClrScr CRT.p 326, 329, 480
CO80 CRT.c 329–330
CompSystem.t 182
ComStr DOS.t 361
Concat System.f 153–154
CONST 53, 60, 75–76, 84
CONSTRUCTOR 283, 293
Copy System.f 153–154
CopyPut Graph.c 419-420, 452
Cos System.f 175
Cpu86 59
Cpu87 59
CRT модуль 7, 130–131, 314
CSeg System.f 189
CurrentDriver Graph.c 407
Cyan CRT.c 337
Cyan Graph.c 441–442
D
DarkGray CRT.c 337
DarkGray Graph.c 441-442
DashedLn Graph.c 424
DateTime DOS.t 350, 352–353
Dec System.p 176, 180
DefaultFont Graph.c 459–460, 462–464, 466
Delay CRT.p 326, 339, 342
Delete System.p 153, 155–156
DelLine CRT.p 326, 335–336
DESTRUCTOR 288
Detect Graph.c 407, 416
DetectGraph Graph.p 406, 413
Directory DOS.с 357
DOS модуль 7, 130–131, 345
DosError DOS.v 361–363, 381–382
DosExitCode DOS.f 379, 381–382
DosVersion DOS.f 346
DottedLn Graph.c 424
Double System.t 182–184
DOWNTO 101
Drawpoly Graph.p 406, 420, 430–431
DSegSystem.f 189, 306
E
EGA Graph.c 407, 412
EGA64 Graph.c 407, 413
EG A64Hi Graph.c 413
EGA64Lo Graph.c 413
EGABlack-EGAWhite Graph.c 446
EGAHi Graph.c 412
EGALo Graph.c 412
EGAMono Graph.c 407, 413
EGAMonoHi Graph.c 413
Ellipse Graph.p 406, 428, 439–440
ELSE 94–97
Empty Fill Graph.c 437
END 53, 71–72, 93–94
EnvCount DOS.f 346–348
EnvStr DOS.f 347–348
EOF System.f 226, 229–230, 259, 268, 322
EOLn System.f 232, 235–237, 268
Erase System.p 225, 228–229, 267–268
ErrorAddr System.v 309
Exec DOS.p 379–381
Exit System.p 105, 124
ExitCode System.v 309
ExitProc System.v 309, 311
Exp System.f 175
Extended System.t 182–184
EXTERNAL 112–113
ExtStrDOS.t 357, 361
F
Fail System.p 289, 292
False System.c 64–66, 68, 174
FExpand DOS.f 357, 360, 368
FILE 61, 224, 245, 249–250, 360
FileMode System.v 247, 267–268
FilePos System.f 255–257, 268 {562}
FileRec DOS.t 250, 358–360
FileSize System.f 255-257, 259, 268
FillChar System.p 151, 295, 299–301
FillEllipse Graph.p 406, 429, 440
FillPatternType Graph.c 436-437, 439
FillPoly Graph.p 406, 410, 440–441
FillSettingsType Graph.t 438
FindFirstDOS.p 356–357, 361–363, 365
FindNext DOS.p 356–357, 361–363, 365
FloodFill Graph.p 406, 410, 441
Flush System.p 232, 235, 268
fmClosed DOS.c 358
fmInOut DOS.c 358
fmInput DOS.c 358
fmOutput DOS.c 358
Font8x8 CRT.c 330, 473
FOR 100–103, 105, 108
FORWARD 112, 126–127, 272
Free System.f 175,179
FreeMem System.p 200–202, 204, 208–209, 312
FreeMin System.v 206–207
FreePtr System.v 206–207
FSearch DOS.f 356, 364–365
FSplit DOS.p 357, 360, 367
FUNCTION 107, 114
G
GetArcCoords Graph.p 406, 429
GetAspectRatio Graph.p 406, 427, 440
GetBkColor Graph.f 406, 443
GetCBreak DOS.p 346–347
GetColor Graph.f 406, 443
GetDate DOS.p 350
GetDefaultPalette Graph.p 406, 444
GetDir System.p 259–260, 268
GetDriverName Graph.f 406, 416
GetEnv DOS.f 346–348
GetFAttr DOS.p 356, 365–366
GetFillPattern Graph.p 406, 439
GetFillSettings Graph.p 406, 438
GetFTime DOS.p 350, 353–354
GetGraphMode Graph.f 406, 415, 419
GetImage Graph.p 406, 452, 454, 521
GetIntVec DOS.p 369, 371
GetLineSettings Graph.p 406, 425
GetMaxColor Graph.f 406, 442, 444
GetMaxMode Graph.f 406, 415–416
GetMaxX Graph.f 406, 421, 423
GetMaxY Graph.f 406, 421, 423
GetMem System.p 200–202,
207–210, 312
GetModeName Graph.f 406, 416
GetModeRange Graph.p 406, 407, 416
GetPalette Graph. p 406, 444
GetPaletteSize Graph.f 406, 444
GetPixel Graph. f 406, 448
GetTextSettings Graph.p 466
GetTime DOS. p 350–352
GetVerify DOS. p 346–347
GetViewSettings Graph.p 406, 457
GetX Graph.f 406, 423
GetY Graph.f 406, 423
GothicFont Graph.c 459
GOTO 102–105, 111
GotoXY CRT.p 326, 331–334, 464
Graph модуль 7, 130–131, 405
Graphs модуль 7–8, 130–131
GraphDefaults Graph.p 406, 417, 423
GraphErrorMsg Graph.f 406, 409–410
GraphResuIt Graph.f 406, 409, 414
Green CRT.c 337
Green Graph.c 441–442
grError Graph.c 411, 438, 444, 457, 462
grFileNotFound Graph.c 410
grFontNotFound Graph.c 410
grInvalidDeviceNum Graph.c 411
grInvalidDriver Graph.c 410
grInvalidFont Graph.c 411, 462
grInvalidFontNum Graph.c 462
grInvalidMode Graph.c 411
grIOError Graph.c 411
grNoInitCraph Graph.c 410
grNoFloodMem Graph.c 410
grNoFontMem Graph.c 410
grNoLoadMem Graph.c 410
grNoScanMem Graph.c 410
grNotDetected Graph.c 410, 414
grOk Graph.c 410
H
Halt System.p 106, 202, 309, 311
HatchFill Graph.c 437 {563}
НеарError System.v 209–211
HeapOrg System.v 198–199, 204
HeapPtr System.v 198–199, 203,
206–207
HercMono Graph.c 407
HercMonoHi Craph.c 413
HiSystem.f 77, 304, 306
Hidden DOS.c 357, 367
HighVideo CRT.p 326, 338
HorizDir Graph.c 459
I
IBM8514 Graph.c 407, 413
IBM8514Lo Graph.c 413
IF 94–98
ImageSize Graph.f 406, 451–452, 522
IMPLEMENTATION 125, 127, 129
IN 77, 152, 163
IncSystem.p 176, 180
InitGraph Graph.p 405–408, 410, 414–418, 423
INLINE 115, 126, 305–307
INLINE директива 307
InOutRes System.v 262
Input System.v 229, 231, 236, 238, 315–316
Insert System.p 154–156
InsLine CRT.p 326, 335–336
InstallUserDriver Graph.f 406, 469
InstallUserFont Graph.f 407, 462
IntSystem.f 175, 179, 306
Integer System.t 61–63, 165
INTERFACE 125–126, 129
InterleaveFill Graph.c 437
INTERRUPT 115, 126, 371–372
IntrDOS.p 370, 373
IOResult System.f 262, 265, 267
К
KeepDOS.p 379, 384
KeyPressed CRT.f 326, 342–343
L
LABEL 52–53, 104
LastMode CRT.v 320, 330–331, 473
LeftText Graph.c 464
Length System.f 77, 153–154, 193
LightBlue CRT.c 337
LightBlue Graph.c 441–442
LightCyan CRT.c 337
LightCyan Graph.c 441–442
LightGray CRT.c 337
LightGray Graph.c 441–442
LightGreen CRT.c 337
LightGreen Graph.c 441–442
LightMagenta CRT.c 337
LightMagenta Graph.c 441–442
LightRed CRT.c 337
LightRed Graph.c 441–442
Line Graph.p 406, 420, 424, 457
LineFill Graph.c 437
LineRel Graph.p 406, 420, 423–424, 426
LineSettingsType Graph.t 424–425
LineTo Graph.p 406, 420, 423–424
Ln System.f 175, 313
Lo System.f 77, 304, 306
LongInt System.t 61–63, 165, 175–176
LowVideo CRT.p 326, 338
Lst Printer.v 387–388
LtBkSlashFill Graph.c 437
LtSlashFill Graph.c 437
M
Magenta CRT.c 337
Magenta Graph.c 441–442
Mark System.p 200, 202–204
MaxAvall System.f 200, 204–205, 207
MaxColors Graph.c 444
MCGA Graph.c 407, 412
MCGACx Graph.c 412
MCGAHi Graph.c 412
MCGAMed Graph.c 412
MemAvail System.f 200, 204–205, 207
Mem System.v 297–298
MemL System.v 297–298
MemW System. v 297–298;
MkDir System.p 260–261, 267
MOD 77, 162, 164
Mono CRT.c 324, 330
Move System.p 295, 301–304
MoveRel Graph.p 406, 423 {564}
MoveTo Graph.p 406, 423, 426
MsDos DOS.p 370, 373–374
MsDos 59
N
NameStrDOS.t 357, 361
New System.pf 200–204, 209–210, 287–289, 312
NIL 195, 289
NormVideo CRT.p 326, 331, 338
NormWidth Graph.c 424
NoSound CRT.p 326, 339
NOT 77, 162, 166, 171
NotPut Graph.c 419, 452
О
OBJECT 61, 72, 271, 276
Odd System.f 77, 176
OF 61, 97, 142
Ofs System.f 190–192, 206, 307
OR 77, 163, 166, 168, 172
Ord System.f 67, 77, 152, 154
OrPut Graph.c 419, 452
Output System.v 231, 238, 241, 315–316
OutText Graph.p 158, 407, 423, 463
OutTextXY Graph.p 158, 407, 463,
465, 470
Overlay модуль 7, 130–131, 393
OvrClearBuf Overlay.p 399–400
OvrCodeList System.v 403
OvrDebugPtr System.v 403
OvrDosHandle System.v 403
OvrEMSHandle System.v 403
OvrError Overlay.с 396–397, 399
OvrFileMode Overlay.v 402–403
OvrGetBuf Overlay.f 398, 400–401
OvrGetRetry Overlay.f 401
OvrHeapEnd System.v 400, 403
OvrHeapOrg System.v 400, 403
OvrHeapPtr System.v 403
OvrHeapSize System.v 399, 403
OvrInit Overlay.p 395–397, 399, 401–404, 313
OvrInitEMS Overlay.p 397, 399, 401
OvrIOError Overlay.c 396–397
OvrLoadCount Overlay.v 401–402
OvrLoadList System.v 403
OvrNoEMSDriver Overlay.c 396–397
OvrNoEMSMemory Overlay.c396-397
OvrNoMemory Overlay.c 396–397, 399
OvrNotFound Overlay.c 396
OvrOk Overlay.с 396
OvrReadBuf Overlay.v 402
OvrReadFunc Overlay.t 402
OvrResult Overlay.f 396–397, 399, 402
OvrSetBuf Overlay.p 399–400
OvrSetRetry Overlay.p 401
OvrTrapCount Overlay.v 401–402
P
PACKED 135
PackTime DOS.p 350, 353
PaletteType Graph.t 444–445
ParamCount System.f 295–296
ParamStr System.f 295–297
PathStr DOS.t 356–357, 361
PC3270 Graph.c 407, 413, 443
PC3270Hi Graph.c 413
Pi System.f 175, 177
PieSlice Graph.p 406, 429, 440
Pointer System.t 61, 65, 189–190,
194–195
PointType Graph.t 436, 441
Port System.v 298–299
PortW System.v 299
Pos System.f 154, 157–158
Pred System.f 67–68, 77, 152
PrefixSeg System.v 187
Printer модуль 7, 130–131, 387
PROCEDURE 106, 114, 283
PROGRAM 51, 141
Ptr System.f 77, 190, 192–193, 197
PutImage Graph.p 406, 452, 454, 458, 522
PutPixel Graph.p 406, 450
R
Random System.f 176, 179–180
Randomize System.p 176, 179
RandSeed System.v 180
Read System.p 247, 267–269
Read System.p (текст) 238–242, 316, 318, 342 {565}
ReadKey CRT.f 326, 342–343, 496
ReadLn System.p 238, 241, 268–269,
315-316, 3V8, 342
ReadOnly DOS.c 357, 367
RealSystem.t 61, 63, 183
RECORD 61, 71, 135–136
Rectangle Graph.p 406, 420, 430
Red CRT.c 337
RegisterBGIdriver Graph.f 406, 461
RegisterBGIfont Graph.f 407, 461
Registers DOS.t 370, 374
Release System.p 200, 202, 203, 204
Rename System.p 225, 228–229, 267–268
REPEAT 99–100
Reset System.p 225, 227, 247, 250,
267–268
RestoreCrtMode Graph.p 405–406, 418–419
Rewrite System.p 225, 227, 247, 250, 267–268
RightText Graph.c 464
RmDir System.p 260–261, 267–268
Round System.f 77, 176, 179, 185
RunError System.p 311
S
SansSerifFont Graph.c 459
SaveIntNN System.v 379
SearchRec DOS.t 356–357, 362
Sector Graph.p 406, 429, 439–440
Seek System.p 255, 257, 259, 268
SeekEOF System.f 232, 237–238, 268
SeekEOLn System.f 232, 237, 268
Seg System.f 190–192, 307
Self System.v 273–274, 292–293
SET 61, 70, 142
SetActivePage Graph.p 406, 454, 456
SetAllPalette Graph.p 406, 444
SetAspectRatio Graph.p 406, 427
SetBkColor Graph.p 406, 442
SetCBreakDOS.p 346, 347
SetColor Graph.p 406, 442
SetDateDOS.p 350
SetFAttrDOS.p 356, 365–366
SetFillPattern Graph.p 406, 437
SetFillStyle Graph.p 406, 437–438
SetFTimeDOS.p 350, 353–354
SetGraphBufSize Graph.p 406
SetGraphMode Graph.p 405-406, 417, 423, 521
SetIntVecDOS.p 369, 371
SetLineStyle Graph.p 406, 425
SetPalette Graph.p 406, 444
SetRGBPalette Graph.p 406, 446
SetTextBuf System.p 227, 231–235
SetTextJustify Graph.p 407, 464
SetTextStyle Graph.p 407, 459, 462, 464–466
SetTimeDOS.p 350–352
SetUserCharSize Graph.p 407, 466
SetVerifyDOS.p 346, 347
SetViewPort Graph.p 406, 423, 457–458
SetVisualPage Graph.p 406, 454, 456 SetWriteMode Graph.p 406, 419-420, 452
SHL 162, 169–170
Shortint System.t 61–62, 165
SHR 162, 169
Sin System.f 175
Single System.t 182–184
SizeOf System.f 77, 190, 193, 292, 299
SlashFill Graph.c 437
SmallFont Graph.c 459
SolidFill Graph.c 437–438
SolidLn Graph.c 424
Sound CRT.p 326, 339–340, 342
SPtr System.f 189
Sqr System.f 175
Sqrt System.f 175, 313
SSeg System.f 189, 306
StackLimit System.v 188
Str System.p 154, 157–159, 185
STRING 61, 64, 148, 149
Succ System.f 67–68, 77, 103, 152
Swap System.f 77, 304
SwapVectorsDOS.p 379
SysFile DOS.c 357
System модуль 7, 130–131
Т
Test8087 System.v 181
TextSystem.t 61, 223, 231, 360
{566}
TextAttr CRT.v 320, 323–324, 337–338, 474
TextBackground CRT.p 324, 326, 329, 337
TextBuf DOS.t 359
TextColor CRT.p 324, 326, 337
TextHeight Graph.f 407, 465
TextMode CRT.p 326, 329–331
TextRec DOS.t 359–360
TextSettingsType Graph.t 466
TextWidth Graph.f 407, 465
THEN 94–95
ThickWidth Graph.c 424
TO 101
TopOff Graph.c 439
TopOn Graph.c 439
TopText Graph.c 464
TriplexFont Graph.c 459
True System.c 64–66, 68, 174
Trunc System.f 77, 175, 179, 313
Truncate System.p 255, 259
Turbo3 модуль 7–8, 130–131
TYPE 53, 60, 273
TypeOf System.f 292
U
UNIT 124–125
UnpackTime DOS.p 350, 353
UNTIL 99–100
UpCase System.f 152
UserBitLn Graph.c 424–425
UserFill Graph.c 437–438
USES 52-53, 124–130, 394–395
V
Val System.p 154, 160
VAR 53–54, 78, 84, 109
Ver55 59
VertDir Graph.c 459
VGA Graph.c 407, 413
VGAHi Graph.c 413
VGALo Graph.c 413
VGAMed Graph.c 413
ViewPortType Graph.t 456, 457
VIRTUAL 282
VolumeID DOS.c 357
W
WhereX CRT.f 326, 334
WhereY CRT.f 326, 334
WHILE 98–100, 103
White CRT.c 337
White Graph.c 441–442
WideDotFill Graph.c 437
Win модуль 8, 479
WindMax CRT.v 320, 328–329
WindMin CRT.v 320, 328–329
Window CRT.p 325, 327–329, 479–480
WITH 140–141, 273–274
Word System.t 61-63, 65, 164
Write System.p 267, 269, 314–316 Write System.p (текст) 238, 241–243, 314–316, 332
WriteLn System.p 238, 241–242, 268–269, 316, 332
X
XHatchFill Graph.c 437
XOR 77, 163, 166, 168, 172
XORPut Graph.c 419, 452
Y
Yellow CRT.c 337
Yellow Graph.c 441–442 {567}
ЛИТЕРАТУРА
1. Turbo Pascal Version 5.0 User's Guide. — Borland International, 1988.
2. Turbo Pascal Version 5.0 Reference Guide. — Borland International, 1988.
3. Turbo Pascal Version 5.5 Object-Oriented Programming Guide. — Borland International, 1989.
4. Microsoft MS-DOS 3.3 Programmer's Reference. — Microsoft Corporation, 1987.
5. *Duntemann J. Turbo Pascal Solutions. — Scott, Foresman and Company, 1988.
6. *Dutton F. Turbo Pascal Toolbox. — SYBEX, 1988.
7. Hergert D. Mastering Turbo Pascal 5. — SYBEX, 1988.
8. Rankin, John R. Computer graphics software constructions. —
Prentice Hall, 1989.
КНИГИ, ОПИСЫВАЮЩИЕ СТАНДАРТНЫЙ ПАСКАЛЬ
Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. — М.: Наука, 1988.
Грогоно П. Программирование на языке Паскаль / Пер. с англ. — М.: Мир, 1982.
Йенсен К., Вирт Н. Паскаль. Руководство для пользователя / Пер. с англ. — М.: Финансы и статистика, 1989. {568}
Оглавление
От автора......................................................... 3
Введение......................................................... 5
Часть I. РАБОТА В СРЕДЕ ПРОГРАММИРОВАНИЯ
ТУРБО ПАСКАЛЬ
1. Интегрированная среда............................................. 9
1.1. Окно просмотра результатов Output................................. 11
1.2. Окно просмотра переменных Watch................................. 12
1. 3. Структура меню................................................. 12
1.3.1. Пункт File (работа с файлами).................................... 14
1.3.2. Пункт Edit (работа с редактором)................................. 18
1.3.3. Пункт Run (запуск на выполнение)................................ 20
1.3.4. Пункт Compile (компиляция)..................................... 22
1.3.5. Пункт Options (установка параметров системы)...................... 26
1.3.6. Пункт Debug (установки отладчика)............................... 35
1.3.7. Пункт Break/Watch (точки останова/обзор).......................... 40
1.4. Интерактивная справка............................................ 42
2. Настройка системы................................................... 45
2.1. Система настройки среды программирования...................... 45
2.2. Принятые в системе расширения имен файлов......................... 47
Часть II. ЯЗЫК ТУРБО ПАСКАЛЬ
3. Построение программ............................................... 49
3.1. Алфавит языка и зарезервированные слова............................ 49
3.2.Общая структура программ......................................... 51
3.3.Комментарии и ключи компиляции.................................. 54
3.4.Условная компиляция программ..................................... 57
4. Введение в систему типов языка...................................... 60
4.1. Простые типы языка.............................................. 62
4.1.1. Целочисленные типы............................................ 62
4.1.2. Вещественные числа............................................. 63
4.1.3. Логический тип................................................. 64
4.1.4. Символьный тип................................................ 64
4.1.5. Строковый тип................................................. 64
4.1.6.Адресный тип................................................... 65
4.1.7. Перечислимые типы............................................ 65
4.1.8. Ограниченные типы (диапазоны)................................. 68
4.2 Сложные типы языка............................................... 69
5. Константы и переменные............................................. 75
5.1. Простые константы................................................. 75 {569}
5.2. Переменные...................................................... 77
5.2.1. Совмещение адресов директивой absolute.......................... 79
5.2.2. Переменные со стартовым значением или типизированные константы...82
5.3. Операция присваивания и совместимость типов и значений............... 85
5.4. Изменение (приведение) типов и значений............................. 89
6. Управляющие структуры языка........................................ 93
6.1. Простой и составной операторы...................................... 93
6.2. Условный оператор (IF...THEN...ELSE).............................. 94
6.3. Оператор варианта (CASE)......................................... 96
6.4. Оператор цикла с предусловием (WHILE)............................ 98
6.5. Оператор цикла с постусловием (REPEAT...UNTIL)................... 99
6.6. Оператор цикла с параметром (FOR...DO)............................ 100
6.7. Оператор безусловного перехода Goto............................... 103
6.8. Операторы Exit и Halt............................................... 105
6.9. Процедуры и функции............................................. 106
6.9.1. Параметры. Глобальные и локальные описания..................... 107
6.9.2. Опережающее описание процедур и функций....................... 112
6.9.3. Объявление внешних процедур................................... 113
6.9.4. Процедуры и функции как параметры............................. 113
6.9.5. Переменные-процедуры и функции............................... 116
6.9.6. Специальные приемы программирования.......................... 117
6.10. Модули. Структура модулей....................................... 124
6.11. Особенности работы с модулями................................... 127
6.12. Система библиотечных модулей языка.............................. 130
Часть III. СРЕДСТВА ЯЗЫКА ТУРБО ПАСКАЛЬ
7. Массивы, записи и множества в деталях................................ 132
7.1. Массивы (Array) и работа с ними.................................. 132
7.2. Тип «запись» (Record) и оператор присоединения With............... 136
7.3. Тип «множество» (Set). Операции с множествами..................... 142
8. Обработка символов и строк......................................... 148
8.1. Символьный и строковый типы (Char и String)....................... 148
8.2. Операции над символами......................................... 151
8.3. Операции над строками........................................... 152
8.3.1. Редактирование строк.......................................... 154
8.3.2. Преобразование строк.......................................... 158
9. Математические возможности Турбо Паскаля............................. 161
9.1. Базовые операции................................................ 161
9.2. Битовая арифметика.............................................. 164
9.3. Логические вычисления и операции отношения...................... 171
9.4. Математические процедуры и функции............................. 175
9.4.1. Обсуждение математических функций языка...................... 177
9.4.2. Генераторы случайных чисел................................... 179 {570}
9.4.3. Оптимизация сложения и вычитания.............................. 180
9.5. Использование математического сопроцессора 80X87.................. 180
10. Код программы, данные, адреса....................................... 186
10.1. Система адресации MS-DOS...................................... 186
10.2. Распределение памяти при выполнении программ.................... 187
10.3. Анализ расположения кода и областей данных программы...............189
10.4. Тип Pointer...................................................... 189
10.5. Средства для работы с адресами.................................... 190
10.5.1. Определение адреса переменных................................. 191
10.5.2. Создание адреса функцией Ptr.................................. 192
10.5.3. Определение размеров типов и переменных...................... 193
11. Ссылки, динамические переменные и структуры......................... 194
11.1. Ссылочные переменные.......................................... 194
11.2. Операция разыменования......................................... 196
11.3. Организация памяти области кучи.................................. 197
11.4. Управление размерами области кучи и стека......................... 199
11.5. Процедуры управления кучей..................................... 199
11.5.1. Размещение динамических переменных.
Процедуры New и GetMem......................................... 200
11.5.2. Освобождение динамических переменных.
Процедуры Dispose и FreeMem..................................... 201
11.5.3. Управление состоянием кучи.
Процедуры Mark и Release........................................ 202
11.5.4. Анализ состояния кучи.
Функции MaxAvail и MemAvail.................................... 204
11.5.5.Более детальный анализ состояния кучи......................... 205
11.5.6. Обработка ошибок распределения памяти........................ 209
11.6. Ссылки, работающие не с кучей................................... 211
11.7. Как организовать структуры, большие чем 64K?..................... 212
11.8. Практический пример построения стека............................. 214
12. Ввод-вывод данных и файловая система. 220
12.1. Понятие логического файла....................................... 220
12.2. Физические файлы в MS-DOS..................................... 221
12.3. Понятие буфера ввода-вывода..................................... 223
12.4. Файловые типы Турбо Паскаля.................................... 223
12.5. Общие процедуры для работы с файлами........................... 225
12.5.1. Связывание файлов........................................... 226
12.5.2. Открытие файлов............................................. 227
12.5.3. Закрытие файлов.............................................. 227
12.5.4. Переименование файлов........................................ 228
12.5.5. Удаление файлов.............................................. 229
12.5.6. Анализ состояния файлов....................................... 229
12.6. Текстовые файлы................................................ 230
12.6.1. Текст-ориентированные процедуры и функции................... 231 {571}
12.6.2. Операция ввода-вывода в текстовые файлы....................... 238
12.7. Типизированные файлы и операции ввода-вывода..................... 245
12.8. Бестиповые файлы и операции ввода-вывода......................... 249
12.9. Последовательный и прямой доступ к файлам........................ 254
12.9.1. Опрос размеров файлов и позиции в них.......................... 256
12.9.2. Позиционирование в файлах.................................... 257
12.9.3. Усечение файлов.............................................. 259
12.10. Процедуры для работы с каталогами............................... 259
12.11. Обработка ошибок ввода-вывода.................................. 261
12.11.1. Функция IOResult............................................ 262
12.11.2. Примеры обработки ошибок ввода-вывода....................... 262
12.11.3. Сводка номеров ошибок ввода-вывода.......................... 266
13. Объектно-ориентированное программирование.......................... 270
13.1. Определения объектов........................................... 270
13.2. Область действия полей объекта и параметр Self.................... 273
13.3. Наследование................................................... 275
13.4. Присваивание объектов........................................... 279
13.5. Полиморфизм.................................................. 280
13.5.1. Статические методы.......................................... 281
13.5.2. Виртуальные методы.......................................... 282
13.5.3. Выбор вида метода............................................ 286
13.6. Динамические объекты........................................... 286
13.6.1. Создание динамических объектов................................ 286
13.6.2. Освобождение объектов. Деструкторы............................ 288
13.6.3. Обработка ошибок при работе с динамическими объектами.......... 289
13.7. Функции TypeOf и SizeOf.......................................... 292
13.8. Задание стартовых значений объектам............................... 293
13.9. Модули, экспортирующие объекты................................. 293
14. Специальные средства языка.......................................... 295
14.1. Работа с командной строкой. Функции ParamCount и ParamStr.......... 295
14.2. Доступ к памяти ПЭВМ. Массивы Mem, MemW, MemL............... 297
14.3. Доступ к портам ввода-вывода. Массивы Port и PortW................ 298
14.4. Процедура заполнения FillChar................................... 299
14.5. Процедура перемещения данных Move............................. 301
14.6. Функции обработки машинных слов Lo.Hi и Swap................... 304
14.7. Вставки машинного кода в программе............................. 304
14.7.1. Оператор inline.............................................. 304
14.7.2. Процедуры с директивой inline................................. 307
14.8. Процедура завершения и обработка ошибок программ................ 307
14.8.1. Оператор RunError............................................ 311
14.8.2. Сводка номеров фатальных ошибок................................. 311 {572}
Часть IV. СПЕЦИАЛЬНЫЕ БИБЛИОТЕКИ ЯЗЫКА
15. Модуль CRT....................................................... 314
15.1. Вывод специальных символов..................................... 316
15.2. Модификация операторов Read, ReadLn............................. 318
15.3. Системные переменные модуля CRT................................ 319
15.3.1. Переменные управления выводом на дисплей..................... 320
15.3.2. Переменные управления работой клавиатуры..................... 321
15.3.3. Переменная TextAttr.......................................... 323
15.4. Процедуры и функции модуля CRT................................ 325
15.4.1. Работа с экраном в целом...................................... 327
15.4.2. Позиционирование курсора.................................... 331
15.4.3. Работа со строками........................................... 334
15.4.4. Настройка цвета.............................................. 337
15.4.5. Подача звуковых сигналов..................................... 339
15.4.6. Использование встроенного таймера............................. 342
15.4.7. Опрос клавиатуры............................................ 342
15.4.8. Переназначение стандартных файлов............................ 343
16. Модуль DOS....................................................... 345
16.1. Опрос и установка параметров MS-DOS............................ 346
16.1.1. Управление параметрами BREAK и VERIFY...................... 347
16.1.2. Опрос системных переменных MS-DOS.......................... 347
16.2. Работа с часами и календарем..................................... 349
16.2.1. Опрос и назначение даты....................................... 350
16.2.2. Опрос и назначение времени.................................... 351
16.2.3. Работа с датой создания файлов................................. 352
16.3. Анализ ресурсов дисков.......................................... 354
16.4. Работа с каталогами и файлами.................................... 356
16.4.1. Типы и константы модуля DOS для работы с файлами. 357
16.4.2. Переменная DosError.......................................... 361
16.4.3. Процедуры поиска файлов на диске.............................. 362
16.4. 4. Работа с атрибутами файлов.................................... 365
16.4.5. Анализ имен файлов........................................... 367
16.5. Работа с прерываниями MS-DOS................................... 369
16.5.1. Чтение и перестановка адресов подпрограмм
прерываний........................................................ 370
16.5.2. Процедура Keep прерывания процедурой Intr...................... 373
16.5.3. Процедура MsDos............................................. 373
16.6. Организация субпроцессов и резидентных программ................... 375
16.6.1. Программирование субпроцессов................................ 379
16.6.2 Процедура Keep и резидентные программы........................ 384
17. Модуль Printer....................................................... 387
17.1. Содержание модуля Printer......................................... 387
17.2. Низкоуровневые средства работы с принтером....................... 388
17.3. Работа с двумя принтерами одновременно........................... 390 {573}
18. Модуль Overlay...................................................... 393
18.1. Оверлейное построение программ................................... 393
18.2. Правила оформления оверлейных программ.......................... 394
18.3. Инициализация работы оверлеев.................................... 395
18.3.1. Включение администратора оверлеев............................ 395
18.3.2. Анализ результата инициализации............................... 396
18.3.3. Размещение оверлейного файла в EMS-памяти.................... 397
18.4. Управление оверлейным буфером.................................. 398
18.4.1. Опрос размера буфера........................................ 399
18.4.2. Установка размера буфера...................................... 399
18.4.3. Принудительная очистка буфера................................. 400
18.5. Оптимизация работы оверлеев..................................... 400
18.5.1. Установка размера области испытаний........................... 401
18.5.2. Подсчет вызовов оверлеев...................................... 401
18.6. Предопределенные переменные для работы с оверлеями............... 402
18.7. Включение оверлеев в ЕХЕ-файлы................................. 403
19. Модуль Graph....................................................... 405
19.1. Файлы BGI и содержимое модуля Graph............................ 405
19.2. Управление графическими режимами............................... 407
19.2.1. Инициализация и закрытие графического режима................. 407
19.2.2. Обработка ошибок инициализации.............................. 408
19.2.3. Классификация и анализ графических режимов................... 412
19.2.4. Очистка экрана и переключение режимов........................ 416
19.2.5. Управление режимом вывода отрезков на экран................... 419
19.3. Системы координат и «текущий указатель»......................... 421
19.3.1. Координаты устройства и мировые координаты................... 421
19.3.2. Управление «текущим указателем»............................. 423
19.4. Рисование графических примитивов и фигур......................... 424
19.4.1. Линии и их стили............................................. 424
19.4.2. Коэффициент сжатия изображения............................... 426
19.4.3. Окружности, эллипсы и дуги.................................... 427
19.4.4. Построение прямоугольников и ломаных......................... 430
19.5. Управление цветами и шаблонами
заливки (заполнения)............................................. 432
19.5.1. Немного о цветах.............................................. 432
19.5.2. Задание типа заливки........................................... 435
19.5.3. Заливка областей изображения.................................. 439
19.5.4. Опрос и установка цветов пера и фона............................ 441
19.5.5. Управление палитрой.......................................... 443
19.6. Битовые графические операции.................................... 448
19.6.1. Битовые операции............................................ 448
19.6.2. Работа с фрагментами изображений.............................. 451
19.7. Управление видеостраницами...................................... 454
19.8. Графические окна................................................ 456
19.9. Вывод текста.................................................... 458 {574}
19.9.1. Выбор шрифта и стиля......................................... 458
19.9.2. Предварительная загрузка и регистрация шрифтов................. 460
19.9.3. Непосредственный вывод строк................................. 463
19.9.4. Размер букв и его масштабирование.............................. 464
19.9.5. Опрос стиля и ориентации шрифтов.............................. 466
19.10. Включение шрифтов и драйверов в ЕХЕ-файл....................... 466
19.11. Подключение новых драйверов.................................... 469
19.12. Один полезный совет............................................ 469
Часть V. ПРАКТИЧЕСКИЕ ПРИЕМЫРАБОТЫС ПЭВМ
20. Профессиональная работа с текстовыми изображениями................... 471
20.1. Программный опрос режимов текстового дисплея..................... 471
20.2. Организация доступа к видеопамяти................................ 474
20.3. Запоминание окон экрана и их восстановление....................... 478
20.3.1. Общие принципы работы с окном............................... 478
20.3.2. Модуль Win.................................................. 479
20.4. Работа с образом экрана на диске................................... 484
20.5. Крупные надписи на экране....................................... 486
20 6. Управление формой курсора....................................... 489
21. Как осуществить полный доступ к клавиатуре............................ 493
21.1. Как организовать опрос алфавитно-цифровой
клавиатуры.......................................................... 493
21.2. Опрос клавиши в регистре Ctrl..................................... 496
21.3. Опрос расширенных кодов и функциональных клавиш................ 499
21.4. Опрос служебных клавиш........................................ 501
21.5. Анализ клавиш регистров и их состояния............................ 502
21.6. Скэн-коды клавиатуры и работа с ними............................. 505
21.7. Эффект обратной записи в буфер ввода.............................. 510
22. Работа с оперативной памятью видеоадаптеров........................... 514
22.1. Многобитовое и многоплоскостное ОЗУВ............................ 514
22.2. Карта дисплейной памяти.......................................... 515
22.3. Вывод текста на графический экран................................. 518
22.4. Работа с графическими образами на диске 520
Приложение 1. Сообщения и коды ошибок, генерируемые
компилятором.......................................................... 527
Приложение 2. Ключи и директивы компилятора............................ 540
Приложение 3. Использование компилятора TPC............................. 547
Приложение 4. Список утилит пакета Турбо Паскаль......................... 549
Приложение 5. Команды встроенного редактора............................. 553
Приложение 6. Автоматическая оптимизация программ....................... 555
Приложение 7. Список демонстрационных процедур и функций................ 556
Индекс................................................................. 561
Литература............................................................. 568 {575}
Справочное издание
Поляков Дмитрий Борисович
Круглов Игорь Юрьевич
Программирование в среде Турбо Паскаль (версия 5.5)
Редактор Г.Н. Борисова
Художественный редактор И.Ю. Круглов
Технический редактор Л.А. Леманская
Художник обложки И.Ю. Круглов
ИБ № 56
Подписано в печать 15.01.92. Бум. тип. № 2. Формат 84 х 1081/32 Гарнитура литературная. Усл. печ. л. 45,51. Уч.-изд. л. 45,54 Печать высокая. Тираж 50000 экз. Заказ № 3886.
Издателъство МАИ, 125871, Москва, Волоколамское шоссе, 4
Отпечатано с готового оригинал-макета в ордена Октябрьской
Революции и ордена Трудового Красного Знамени МПО «Первая
Образцовая типография» Министерства печати и информации
Российской Федерации. 113054, Москва, Валовая, 28.
{576}
* Так напечатано. Видимо при печати пропущена часть текста.— Ю. Ш.
* Так напечатано. Вообще-то с точностью до 8-го знака после запятой число p=3,14159265.— Ю.Ш.
* В книгах рассматривается Турбо Паскаль версий 3.0 и 4.0