Выбрать главу

Primary file (Первый файл): MAINPR.PAS

Теперь, если воспользоваться командами компиляции, то Турбо Паскаль сначала прочитает и загрузит в память Primary file, а затем начнет его компилировать.

Прежде чем закончить работу с одним программным проектом и приступить к другому, нужно удалить старое имя Primary file. Для этого выбирается в меню опция Primary file и нажимается клавиша пробела или комбинация клавиш Ctrl+Y. Имя Primary file при этом стирается из окна выбора файла.

1.3.4.5. Опция установки EXE- и TPU-файлов Destination. Эта опция используется для указания системе, куда должен быть помещен скомпилированный файл. В опции Destination определены две альтернативы: Memory и Disk (память и диск). По умолчанию коды компиляции сохраняются в памяти. Это очень удобно, так как можно производить изменения в программе и тут же видеть их результат. Ради такой работы, собственно, и была создана система Турбо Паскаль. Если же выбрана опция Disk, то выполняемые EXE-файлы и модули (TPU-файлы) всегда записываются на диск. Это необходимо для получения программы, которая может работать непосредственно под управлением MS-DOS.

1.3.4.6. Команда указания строки ошибки Find Error. Это важная команда для автономного компилятора. Тем не менее опишем ее здесь. Если во время выполнения программы по команде Run при включенном отладчике была обнаружена ошибка, то отладчик активизирует редактор, найдет строку, во время выполнения которой

- 25 -

произошла ошибка, установит туда курсор и выдаст в верхней строке окна Edit сообщение об ошибке (рис. 1.15).

Если же программа была запущена под управлением MS-DOS

Рис. 1.15

или из среды программирования при отключенном отладчике, то в случае ошибки ее выполнение прервется и на экране появится сообщение следующего вида:

Runtime error 200 at 20B0:8236

Ошибка выполнения 200 по адресу 20B0:8236

В нем содержится важная информация: номер ошибки и адрес команды, которая привела к ошибке. Воспользовавшись списком ошибок выполнения программ, можно по номеру ошибки определить ее вид. Например, ошибка 200 — это деление на ноль. Чтобы определить, в каком месте текста программы произошла ошибка, необходимо произвести следующие действия:

1) запомнить адрес, выданный в сообщении (лучше записать);

2) войти в систему Турбо Паскаль;

3) загрузить текст этой программы в редактор;

4) включить режим отладки (см. разд. 1.3.5.1);

5) откомпилировать программу (Alt+F9);

6) выбрать пункт Compile основного меню и в нем дать команду Find Error;

7) ввести запомненный (записанный) адрес в окна ввода адреса (рис. 1.16). После нажатия клавиши ввода в этом окне система быстро

Рис. 1.16

- 26 -

определит место ошибки в тексте программы, и курсор редактора укажет на строку, в которой произошла ошибка.

1.3.4.7. Команда получения общего состояния Get Info. Выбрав этот пункт меню, можно открыть на экране новое окно, содержащее различную информацию о текущем состоянии системы и программы (рис. 1.17).

Рис. 1.17

1.3.5. Пункт Options (установка параметров системы)

Этот пункт позволяет управлять характеристиками компилятора и самой среды Турбо Паскаль. Меню Options содержит семь пунктов (рис. 1.18).

Рис. 1.18

Первые четыре опции — Compiler, Linker, Environment и Directories — имеют еще одно подменю, содержащее несколько директив. Остальные опции необходимы только в специальных ситуациях.

1.3.5.1. Установки компилятора Compiler. Меню, появляющееся при выборе этой команды, показано на рис. 1.19. Пункты в меню

- 27 -

Рис. 1.19

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

Выражение «директива компилятора» означает, что инструкции даются компилятору во время обработки текста программы. Подробно о ее синтаксисе рассказывается в разд. 3.3 «Комментарии и ключи компиляции» и разд. 3.4 «Условная компиляция программ».

Режим проверки диапазонов Range Checking. Когда компиляция программы происходит в режиме Range Checking On (включен), исполняемый код формируется так, что при выполнении программы происходит контроль:

1) выхода индекса массива за его границы;

2) переполнения переменных типа String;

3) переполнения разрядной сетки числовых переменных;

4) некорректная инициализация данных типа «объект».

Как только происходит нарушение, программа прекращает свою работу и генерируется ошибка выполнения (Runtime error).

По умолчанию режим Range Checking находится в состоянии Off (выключен). Однако при отладке программы очень полезно включить этот режим (On), так как это увеличит ее эффективность. После отладки рекомендуется восстановить состояние Off.

Режим проверки стека Stack Checking. Стек — это область памяти, в которой программы обычно сохраняют значения локальных переменных во время работы процедур или функций.

- 28 -

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

Размер стека в Турбо Паскале по умолчанию принимается равным 16K. Для изменения этого значения используется опция Memory Sizes рассматриваемого подменю настройки компилятора.

Режим проверки ввода-вывода I/O Checking. В этом режиме компилятором генерируются коды проверки ошибок ввода-вывода. По умолчанию он включен, и программа будет генерировать ошибку выполнения. Под ошибкой ввода-вывода подразумевается любое аварийное прерывание при обращении к любому периферийному устройству центрального процессора ПЭВМ (чтение-запись на дисках, печать на принтере, ввод с клавиатуры и т.д.).

Обнаружение такой ошибки, так же как и всех других, обычно прекращает выполнение всей программы. Однако Турбо Паскаль поддерживает специальные средства обработки ошибок ввода-вывода. Подробно они будут описаны в разд. 12.11 «Обработка ошибок ввода-вывода».

Режим генерации «дальних» вызовов Force Far Calls. Этот режим применяется в специальных приложениях программирования. «Дальний» вызов (длинный адрес, Far Call) — это полная адресация для части процедур и функций, размещаемых в разных сегментах памяти отдельно от основного программного сегмента. («Дальний» вызов содержит в себе, кроме относительного адреса сегмента, необходимого внутри 64-килобайтного блока, еще и базовый адрес внешнего сегмента.)

Обычное состояние режима Force Far Calls – Off. При этом компилятор генерирует только «ближние» (near) вызовы. Если же состояние – On, то дальние вызовы генерируются для всех процедур и функций программы. Например, дальние вызовы обязательны при генерации оверлейного кода (см. гл. 18 «Модуль Overlay»).

Режим генерации оверлейных кодов Overlay Allowed. Оверлеи — это части кода программы, которые во время ее выполнения могут перекрываться. Их использование позволяет системе выполнять программы, размер которых больше, чем размер всей доступной памяти в компьютере. Оверлеи загружаются в память в тот момент, когда становятся нужны находящиеся в них программы, и после завершения своей работы выгружаются из памяти, освобождая место для другого оверлея.

- 29 -

Чтобы получить модуль, который планируется использовать как оверлейный, необходимо включить этот режим. По умолчанию состояние Overlay Allowed — Off. Более подробно этот вопрос будет рассмотрен в гл. 18 «Модуль Overlay».

Опция установки единицы обработки данных Align Data. Эта опция управляет режимом доступа к данным в компьютерах на базе микропроцессоров семейства 80Х86. По умолчанию используется режим Word как наиболее эффективный. Рекомендуем использовать режим по умолчанию. Более подробно об этом см. Приложение 2.