Руководство по языку
B.Pascal 7 & Objects/LR
Введение.......................................................10
О чем рассказывается в данном руководстве......................11
Часть I. Язык Borland Pascal...................................12
Глава 1. Что такое программа Borland Pascal?...................12
Программа Borland Pascal.......................................13
Процедуры и
функции............................................13
Операторы......................................................15
Выражения......................................................16
Лексемы........................................................17
Типы, переменные, константы и
типизированные константы.........17
Компоновка
частей..............................................19
Модули.........................................................20
Синтаксические
диаграммы.......................................21
Глава 2.
Лексемы...............................................22
Специальные
символы............................................22
Зарезервированные слова и стандартные директивы Borland Pascal........................................................24
Идентификаторы.................................................25
Числа..........................................................27
Метки..........................................................29
Строки
символов................................................29
Комментарии....................................................31
Строки программы...............................................31
Глава 3.
Константы.............................................32
Глава 4.
Типы..................................................34
Простые типы...................................................35
Порядковые
типы................................................35
Целочисленные
типы.............................................37
Булевские
типы.................................................39
Символьный тип
(char)..........................................40
Перечислимые
типы..............................................40
Отрезки
типа...................................................41
Вещественные типы..............................................42
Программная поддержка чисел с
плавающей точкой.................43
Аппаратная поддержка чисел с плавающей
точкой..................43
Строковые типы.................................................44
Структурные
типы...............................................45
Типы
массив....................................................46
Типы
запись....................................................48
Объектные
типы.................................................50
Компоненты и область
действия..................................54
Методы.........................................................54
Виртуальные
методы.............................................54
Динамические
методы............................................56
Создание экземпляров
объектов..................................57
Активизация методов............................................59
Активизация уточненных
методов.................................60
Множественные
типы.............................................61
Файловые
типы..................................................62
Ссылочные типы.................................................63
Тип
Pointer....................................................64
Тип
PChar......................................................64
Процедурные типы...............................................65
Процедурные
значения...........................................65
Совместимость
типов............................................67
Тождественные и совместимые
типы...............................67
Тождественность
типов..........................................67
Совместимость
типов............................................68
Совместимость по
присваиванию..................................69
Раздел описания
типов..........................................70
Глава 5. Переменные и типизированные
константы.................72
Описания
переменных............................................72
Сегмент данных.................................................73
Сегмент
стека..................................................73
Абсолютные
переменные..........................................74
Ссылки на
переменные...........................................76
Квалификаторы..................................................77
Массивы, строки и
индексы......................................78
Записи и десигнаторы
полей.....................................79
Десигнаторы компонентов
объекта................................79
Переменные-указатели и динамические
переменные.................79
Приведение типов
переменных....................................81
Типизированные константы.......................................83
Константы простого
типа........................................84
Константы строкового
типа......................................84
Константы структурного
типа....................................85
Константы типа
массив..........................................86
Константы типа
запись..........................................88
Константы объектного
типа......................................89
Константы множественного типа..................................90
Константы ссылочного
типа......................................91
Константы процедурного
типа....................................92
Глава 6.
Выражения.............................................93
Синтаксис
выражений............................................94
Операции.......................................................99
Арифметические
операции........................................99
Унарные арифметические операции...............................100
Логические
операции...........................................101
Булевские
операции............................................101
Операция со строками..........................................103
Операции над символьными
указателями..........................104
Операции над
множествами......................................105
Операции
отношения............................................106
Сравнение простых
типов.......................................107
Сравнение
строк...............................................107
Сравнение упакованных
строк...................................107
Сравнение
указателей..........................................107
Сравнение символьных
указателей...............................108
Сравнение
множеств............................................108
Проверка на принадлежность к
множеству........................108
Операция
@....................................................109
Использование операции @ для
переменной.......................110
Использование операции @ для процедуры
или функции или
метода.......................................................111
Вызовы
функции................................................111
Описатели
множества...........................................113
Приведение типа
значений......................................114
Процедурные типы в
выражениях.................................115
Глава 7.
Операторы............................................117
Простые операторы.............................................117
Оператор
присваивания.........................................118
Операторы
процедуры...........................................119
Операторы
перехода............................................120
Структурные
операторы.........................................120
Составные
операторы...........................................121
Условные
операторы............................................121
Оператор условия (if).........................................122
Оператор варианта
(case)......................................123
Оператор
цикла................................................125
Оператор цикла с постусловием
(repeat)........................125
Операторы цикла с предусловием
(while)........................127
Операторы цикла с параметром
(for)............................128
Оператор
with.................................................131
Глава 8. Блоки, локальность и область
действия................133
Синтаксис.....................................................133
Правила для области
действия..................................136
Область действия для
блока....................................136
Область действия
записи.......................................137
Область действия
объекта......................................137
Область действия
модуля.......................................137
Глава 9. Процедуры и
функции..................................139
Описания near и
far...........................................141
Описания
export...............................................142
Описания
interrupt............................................143
Описание
forward..............................................143
Описания
external.............................................145
Описания
assembler............................................147
Описания inline...............................................147
Описания
функций..............................................148
Описания
методов..............................................150
Конструкторы и деструкторы....................................151
Восстановление ошибок
конструктора............................154
Параметры.....................................................156
Параметры-значения............................................157
Параметры-константы...........................................157
Параметры-переменные..........................................157
Нетипизированные
параметры....................................158
Открытые параметры............................................160
Открытые строковые
параметры..................................160
Открытые
параметры-массивы....................................162
Динамические переменные объектного
типа.......................163
Процедурные
переменные........................................165
Параметры процедурного
типа...................................168
Глава 10. Программы и
модули..................................170
Синтаксис программ............................................170
Заголовок
программы...........................................170
Оператор
uses.................................................171
Синтаксис
модулей.............................................172
Заголовок
модуля..............................................172
Интерфейсная
секция...........................................173
Секция
реализации.............................................174
Секция
инициализации..........................................175
Косвенные ссылки на
модули....................................175
Перекрестные ссылки на
модули.................................177
Совместное использование
описаний.............................179
Глава 11. Динамически компонуемые
библиотеки..................180
Что такое
DLL?................................................180
Использование DLL.............................................180
Модули
импорта................................................182
Статический и динамический
импорт.............................184
Написание
DLL.................................................185
Директива процедуры
export....................................187
Оператор
exports..............................................187
Код инициализации
библиотеки..................................189
Замечания по программированию
библиотек.......................191
Глобальные переменные в
DLL...................................191
Глобальные переменные и файлы в
DLL...........................191
DLL и модуль
System...........................................191
Ошибки этапа выполнения в
DLL.................................192
DLL и сегменты
стека..........................................192
Создание совместно используемых
DLL...........................193
Глава 12. Библиотеки исполняющей
системы......................194
Модули Borland
Pascal.........................................194
Модуль
System.................................................195
Модуль Dos и
WinDos...........................................195
Модуль
Crt....................................................195
Модуль
WinCrt.................................................196
Модуль
Printer................................................196
Модуль WinPrn.................................................196
Модуль
Overlay................................................196
Модуль
Strings................................................197
Модуль
Graph..................................................197
Модули Turbo3 и
Graph3........................................197
Модули WinTypes и
WinProcs....................................197
Модуль
Win31..................................................198
Модуль WinAPI.................................................198
Модули, поддерживающие Windows
3.1............................198
Глава 13. Стандартные процедуры и
функции.....................199
Процедуры управления работой
программы........................200
Функции
преобразования........................................200
Арифметические
функции........................................201
Порядковые процедуры и
функции................................202
Строковые процедуры и
функции.................................202
Процедуры и функции динамического
распределения памяти........203
Функции для работы с указателями и
адресами...................204
Прочие процедуры и функции....................................205
Предописанные
переменные......................................206
Глава 14. Ввод и
вывод........................................215
Файловый
ввод-вывод...........................................217
Текстовые
файлы...............................................219
Нетипизированные
файлы........................................221
Переменная
FileMode...........................................221
Устройства в Borland
Pascal...................................222
Устройства
DOS................................................223
Устройство
CОN................................................224
Устройства LРT1, LРT2 и
LРT3..................................224
Устройства CОМ1 и
CОМ2........................................225
Устройство
NUL................................................225
Устройства, предназначенные для
текстовых файлов..............225
Ввод и вывод с помощью модуля
Crt.............................226
Использование модуля
CRT......................................227
Окна
CRT......................................................227
Специальные
символы...........................................228
Ввод
строк....................................................228
Процедуры и функции модуля
Crt................................230
Константы и переменные модуля Crt.............................232
Ввод и вывод с помощью модуля
WinCrt..........................233
Использование модуля
WinCrt...................................234
Специальные
символы...........................................236
Ввод
строк....................................................236
Процедуры и
функции...........................................237
Переменные модуля
WinCrt......................................239
Печать из программы Windows...................................241
Изменение
заголовков..........................................241
Изменение
шрифтов.............................................242
Остановка задания
печати......................................243
Специальные
символы...........................................243
Процедуры и функции модуля
WinPrn.............................244
Функция
Open..................................................246
Функция InOut.................................................246
Функция
Flush.................................................247
Функция
Clоsе.................................................247
Глава 15. Использование сопроцессора
80x87....................248
Типы данных процессора
80x87..................................251
Арифметические операции с повышенной
точностью................252
Сравнение вещественных
чисел..................................253
Стек вычислений сопроцессора
80x87............................253
Запись вещественных чисел при
использовании сопроцессора 80x87........................................................255
Модули, в которых используется
сопроцессор 80x87..............255
Распознавание сопроцессора 80х87 в
программах DOS.............256
Распознавание сопроцессора 80x87 в
программе Windows..........257
Использование эмуляции сопроцессора
80x87 на языке ассемблера...................................................258
Глава 16. Модуль
Dоs..........................................259
Процедуры и функции модуля
Dos................................260
Константы, типы и переменные модуля Dos.......................263
Типы..........................................................263
Переменные модуля
Dos.........................................264
Процедуры и функции модуля
WinDos.............................265
Константы, типы и переменные модуля
WinDos....................268
Типы..........................................................269
Переменные модуля
WinDos......................................269
Глава 17. Программирование в защищенном
режиме DOS............270
Что такое защищенный
режим?...................................270
Расширения Borland защищенного режима
DOS.....................274
DPMI-сервер...................................................274
Администратор этапа
выполнения................................274
Разработка прикладных программ DOS
защищенного режима.........276
Надежное программирование в защищенном
режиме.................276
Загрузка в сегментные регистры
недопустимых значений..........277
Функция Ptr и массивы
Mem.....................................277
Абсолютные
переменные.........................................277
Операции с
сегментами.........................................278
Использование
сегментных......................................278
Доступ к памяти вне границ
сегмента...........................278
Запись в сегмент
кода.........................................279
Разыменование указателей
nil..................................279
Сегменты кода и
данных........................................279
Управление динамически распределяемой
памятью.................280
Предопределенные
селекторы....................................280
Переменная
SelectorInc........................................281
Модуль
WinAPI.................................................284
Управление памятью............................................284
Подпрограммы управления памятью
API...........................285
Управление
модулем............................................289
Управление
ресурсами..........................................290
Управление
селектором.........................................291
Другие подпрограммы
API.......................................292
Прямой доступ к
DPMI-серверу..................................293
Компиляция прикладной программы
защищенного режима............293
Выполнение программы защищенного
режима DOS...................294
Управление объемом используемой RTM
памяти....................295
Глава 18. Строки с завершающим
нулем..........................297
Что такое строка с завершающим
нулем?.........................297
Функции модуля
Strings........................................297
Функции модуля
Strings........................................298
Использование строк с завершающим
нулем.......................299
Символьные указатели и строковые
литералы.....................301
Символьные указатели и символьные
массивы.....................302
Индексирование символьного
указателя..........................303
Операции с символьными
указателями............................304
Строки с завершающим нулем и
стандартные процедуры............305
Пример использования функций с
завершающим нулем..............306
Глава 19. Использование графического
интерфейса Borland.......308
Драйверы......................................................308
Поддержка устройства IBM
8514.................................310
Система
координат.............................................311
Текущий
указатель.............................................311
Текст.........................................................313
Графические изображения и их
виды.............................314
Области просмотра и двоичные
образы...........................314
Поддержка страниц и
цветов....................................315
Обработка
ошибок..............................................315
Начало работы.................................................316
Пользовательские программы управления
динамически распределяемой
памятью.......................................318
Процедуры модуля
Graph........................................321
Константы, типы и переменные модуля
Graph.....................326
Константы.....................................................326
Типы..........................................................328
Переменные....................................................328
Глава 20. Использование
оверлеев..............................329
Администратор
оверлеев........................................330
Управление оверлейным буфером.................................331
Процедуры и функции модуля
Overlay............................334
Коды
результата...............................................335
Разработка программ с
оверлеями...............................335
Генерация оверлейного
кода....................................336
Требование использования дальнего типа
вызовов................337
Инициализация администратора
оверлеев.........................338
Разделы инициализации в оверлейных
модулях....................341
Что не должно использоваться в
качестве оверлеев..............342
Отладка
оверлеев..............................................343
Внешние программы в
оверлеях..................................343
Задание функции чтения
оверлея................................345
Оверлеи в файлах
.EXE.........................................347
Часть III. В среде Borland
Pascal.............................348
Глава 21. Использование
памяти................................348
Использование памяти программами
реального режима DOS.........348
Администратор динамически
распределяемой области памяти DOS...350
Методы освобождения областей динамически
распределяемой памяти.......................................................352
Список свободных
блоков.......................................355
Переменная
HeapError..........................................356
Использование памяти в программах DOS
защищенного режима......359
Сегменты
кода.................................................359
Атрибуты
сегмента.............................................359
Атрибуты MOVEABLE или FIXED...................................359
Атрибуты PRELOAD или
DEMANDLOAD...............................359
Атрибуты DISCARDABLE или
PERMAMENT............................359
Сегменты данных и
стека.......................................361
Изменение атрибутов...........................................361
Администратор динамически
распределяемой области памяти DOS...362
Переменная
HeapError..........................................363
Использование памяти в программах
Windows.....................365
Атрибуты
сегментов............................................365
Атрибуты MOVEABLE или
FIXED...................................365
Атрибуты PRELOAD или
DEMANDLOAD...............................365
Атрибуты DISCARDABLE или
PERMANENT............................365
Изменение
атрибутов...........................................365
Сегмент локальных динамических
данных.........................367
Администратор динамически распределяемой
области памяти.......368
Переменная
HeapError..........................................370
Форматы внутреннего представления
данных......................372
Целочисленные типы............................................372
Символьный
тип................................................372
Булевский
тип.................................................372
Перечислимый
тип..............................................372
Типы с плавающей
точкой.......................................373
Вещественный
тип..............................................373
Тип числа с одинарной точностью...............................374
Тип числа с двойной
точностью.................................374
Тип числа с повышенной
точностью..............................375
Сложный
тип...................................................375
Значения типа
указатель.......................................375
Значения строкового
типа......................................376
Значения множественного
типа..................................376
Значения типа массив..........................................376
Значения типа
запись..........................................376
Объектные
типы................................................377
Таблица виртуальных
методов...................................378
Таблица динамических
методов..................................381
Значения файлового
типа.......................................385
Процедурные
типы..............................................387
Прямой доступ к памяти........................................387
Прямой доступ к
портам........................................387
Глава 22. Вопросы
управления..................................388
Соглашения по
вызовам.........................................388
Параметры-переменные..........................................388
Параметры-значения............................................388
Открытые строковые
параметры..................................389
Результаты функций............................................390
Ближние и дальние типы
вызовов................................391
Вложенные процедуры и
функции.................................391
Соглашения о вызовах
методов..................................392
Вызовы виртуальных
методов....................................394
Вызовы динамических
методов...................................395
Конструкторы и
деструкторы....................................396
Стандартный код входа и
выхода................................396
Соглашения по сохранению
регистров............................400
Процедуры
выхода..............................................400
Обработка
прерываний..........................................403
Разработка процедур обработки
прерываний......................403
Глава 23. Автоматическая
оптимизация..........................405
Свертывание
констант..........................................405
Слияние констант..............................................405
Вычисление по короткой
схеме..................................405
Параметры-константы...........................................406
Устранение избыточной загрузки указателей.....................406
Подстановка констант множественного
типа......................406
Малые
множества...............................................407
Порядок
вычисления............................................407
Проверка на допустимость границ...............................408
Использование сдвига вместо
умножения.........................408
Автоматическое выравнивание на границу
слова..................408
Удаление неиспользуемого кода.................................409
Эффективная
компоновка........................................409
Часть IV. Использование Borland Pascal
с языком ассемблера....411
Глава 24. Встроенный ассемблер................................411
Оператор
asm..................................................411
Использование
регистров.......................................412
Синтаксис операторa
ассемблера................................412
Метки.........................................................413
Размер инструкции
RET.........................................413
Автоматическое определение размера
перехода...................414
Директивы
ассемблера..........................................415
Операнды......................................................417
Выражения.....................................................417
Различия между выражениями Паскаля и
ассемблера...............418
Элементы
выражений............................................419
Константы.....................................................420
Числовые константы............................................420
Строковые
константы...........................................420
Регистры......................................................422
Идентификаторы................................................422
Классы
выражений..............................................426
Типы
выражений................................................427
Операции в
выражениях.........................................430
Процедуры и функции ассемблера................................434
Глава 25. Компоновка с программами на
языке ассемблера........437
Турбо Ассемблер и Borland
Pascal..............................438
Примеры программ на языке
ассемблера..........................440
Методы на языке
ассемблера....................................441
Включаемый машинный
код.......................................442
Операторы
Inline..............................................442
Директивы inline..............................................444