Рисунок 17. Просмотр значений переменных в окне Watch

Для просмотра и изменения значений переменных при отладке программы существует режим Watch (следить) и Evaluate Modifil в пункте Debug. После выбора режима Watch в нижней части экрана открывается окно (зеленого цвета). В пункте меню Debug есть режим Add watch, в котором есть поле ввода и три кнопки. В поле ввода записывается одна или несколько переменных значения, которые надо отследить. Клавишей Esc окно Addwatch убирается. Остается окно Watch, в котором указаны имена переменных и через двоеточие их значения. Используя пошаговое выполнение программы можно видеть, как меняются значения этих переменных.
Например, на рисунке 17, показано окно рабочей программы 1.pas, в которой записана простая программа, и окно Watch, содержащее три переменных и их значения после выполнения программы.
Если нужно добавить еще одну переменную в окно Watch то, не выходя из редактора нужно нажать Ctrl+F7. В появившемся окне Add watch добавляем имя нужной переменной.
Если окно Watch активно из его списка можно удалить имя переменной. Для этого переменная выбирается клавишами управления курсором и нажимается клавиша Del или Ctrl+Y.
Замечание: окно Watch убирается и восстанавливается клавишей F6.
Для изменения значения некоторых переменных выбирается режим Evaluate Modify (Ctrl+F4).
Открывается диалоговое окно (см. рис. 18).
Рисунок 18. Диалоговое окно Evaluate Modify

Во входное поле Expression (выражение) вводится имя переменной, в поле Result (результат) появляется ее значение. Переменной можно присвоить новое значение, введя его с клавиатуры в третье поле. Кнопка Evaluate служит для вычисления выражения в поле ввода, кнопка Modify – для изменения значения. Для закрытия окна – клавиша Esc.
Распечатка программ.
Чтобы распечатать программу из активного окна редактора нужно в пункте меню File выбрать Print.
Представление математических функций на языке ТР
| Математическая запись | Запись TP 7.0. |
| x2 | SQR(X) |
| SQRT(X) |
| |x| | ABS(X) |
| sin x | SIN(X) |
| cos x | COS(X) |
| tg x | SIN(X)/COS(X) |
| ctg x | COS(X)/SIN(X) |
| arcsin x | ARCTAN(X/SQRT(1-SQR(X))) |
| arccos x | ARCTAN(SQRT(1-SQR(X))/X) |
| arctg x | ARCTAN(X) |
| ex | EXP(X) |
| Натуральный логарифм | LN(X) |
| xn | EXP(N*LN(X)) |
| Выдает случайное число из интервала (0,1)[4] | RANDOM[(X)] |
| Целая часть x | INT(X) |
| Дробная часть числа x | FRAC(X) |
| Число ПИ | PI |
| Возвращает число равное целой части (округляет по правилам арифметики тип LONGINT) | ROUND(X) |
| Округляет число, отбрасывая дробную часть числа тип LONGINT | TRUNC(X) |
| Увеличивает X на величину Y | INC(X,Y) |
| Уменьшает X на величину Y | DEC(X,Y) |
Таблица 1 Сообщения об ошибках компиляции
| Номер ошибки | Комментарий |
| 1 | Недостаточно оперативной памяти. Следует воспользоваться стандартными средствами расширения оперативной памяти. |
| 2 | В данном месте программы должен находиться идентификатор. |
| 3 | Неизвестный(не определенный ранее) идентификатор |
| 4 | Идентификатор определяется второй раз |
| 5 | Синтаксическая ошибка (нарушены правила написания предложения) |
| 6 | Ошибка в изображении вещественного числа |
| 7 | Ошибка в изображении целого числа |
| 8 | Строковая константа превышает допустимый размер(255 символов) Вероятно, пропущена закрывающая кавычка |
| 10 | Неожиданное завершение программы. Вероятно, не сбалансированною число зарезервированных слов begin и end, неправильно оформлен файл. |
| 11 | Компилируемая строка превышает 127 символов |
| 12 | В данном месте программы требуется идентификатор типа |
| 13 | Попытка открыть в среде программирования количество файлов больше, чем допускается в операционной системе |
| 14 | Неправильно имя или путь файла. |
| 15 | Файл не найден нив текущем, ни в заданном каталоге. |
| 16 | Диск, куда записывается информация, не имеет свободного места |
| 17 | Ошибка в директиве компилятора, или она используется в недопустимом месте |
| 18 | Слишком много файлов используется при компиляции. |
| 19 | При определении типа-указателя используется тип, нигде не определенный. |
| 20 | В данном месте программы должен быть идентификатор переменной. Неправильно определен тип. |
| 21 | Неправильно определен тип |
| 22 | Размер данных более 65520 байт |
| 24 | Тип множества имеет более 256 элементов или содержит элементы с порядковым номером не в пределах 0..255 |
| 25 | Компонентами файловой переменной не могут быть файлы или объекты |
| 26 | Несовместимые типа(в операциях присвоения, в выражениях, у индекса массива, тип фактического параметра при обращении к подпрограмме неэквивалентен типу формального параметра |
| 27 | В типе диапазоне может использоваться только порядковый тип |
| 28 | В типе диапазоне нижняя граница больше, чем верхняя |
| 29 | Здесь может использоваться только порядковый тип. |
| 30 | Здесь можно использовать только константу целого типа |
| 31 | Здесь можно использовать только константу. |
| 32 | Здесь можно использовать только числовую константу |
| 33 | Здесь должен бить тип-указатель |
| 34 | Недопустимый тип функции |
| 35 | Здесь должен быть идентификатор метки |
| 36 | Здесь ожидается зарезервированное слово begin |
| 37 | Здесь ожидается зарезервированное слово end |
| 38 | Выражение должно быть целого типа |
| 39 | Выражение должно быть порядкового типа |
| 40 | Выражение должно быть логического типа |
| 41 | В операторе не могут быть операнды такого типа |
| 42 | Ошибка, в выражении(например, пропущен знак операции между операндами). |
| 43 | Неправильно присвоено значение переменной. |
| 44 | Требуется значение полу записи |
| 45 | Объектный файл больше, чем 64 кбайта. |
| 46 | НЕ найдена внешняя подпрограмма. |
| 47 | Фай, по-видимому, не является объектным |
| 48 | Кодовый сегмент больше 65520 байт. |
| 49 | Сегмент данных больше 65520 байт |
| 50 | Здесь следует поместить зарезервированное слово do |
| 51 | Неправильное использование директивы PUBLIC в подпрограмме, написанной на ассемблере |
| 52 | Неправильное использование директивы EXTRN в подпрограмме, написанной на ассемблере |
| 53 | В объектном файле больше 256 директив |
| 54 | Здесь следует поместить зарезервированное слово of |
| 55 | В модуле пропущен интерфейс(нет зарезервированного слова) |
| 56 | Неправильная перемещаемая ссылка в подпрограмме, написанной на ассемблере. |
| 57 | Здесь следует поместить зарезервированное слово then |
| 58 | Здесь следует поместить зарезервированное слово to или downto |
| 59 | Заголовок подпрограммы объявлен с директивой, но сама подпрограмма далее не описана. |
| 61 | При преобразовании типа величины исходного и результирующего типа имеют различные размер |
| 62 | Деление на нуль |
| 63 | Эта программа работы с файлом не поддерживает данный типа файла |
| 64 | Недопустимый типа параметра у подпрограмм Read, Readln, Write, Writeln |
| 65 | Эта переменная должна быть типа-указателя |
| 66 | Эта переменная должна быть строкового типа |
| 67 | Эта выражение должно быть строкового типа |
| 68 | Циклическая ссылка модулей друг на друга |
| 69 | Имена модуля и файла, в котором он находится, не совпадают |
| 70 | Один или несколько используемых модулей изменены после их компиляции |
| 71 | Внутренний стек компилятора переполнен из-за глубокой вложенности операторов |
| 72 | Ошибка в формате скомпилированного модуля. Возможно, он был скомпилирован предыдущей версией пакета. |
| 73 | Пропущена исполнительная часть модуля |
| 74 | Недопустимое значение константы |
| 75 | Переменная должна быть типа-записи или типа-объекта |
| 76 | Используемая константа имеет недопустимое значение |
| 77 | Эта переменная должна быть файлового типа |
| 78 | Это выражение должно быть типа указателя |
| 79 | Это выражение должно быть числовым |
| 80 | Метка не из данного блока |
| 81 | Меткой уже помечен один оператор |
| 82 | Метка объявлена, но ни один оператор ей не помечен |
| 83 | Неправильный аргумент у операции |
| 84 | В модуле пропущено зарезервированное слово Unit |
| 85 | Здесь пропущена точка с запятой |
| 86 | Здесь пропущено двоеточие |
| 87 | Здесь пропущена запятая |
| 88 | Здесь пропущена открывающая круглая скобка |
| 89 | Здесь пропущена закрывающая круглая скобка |
| 90 | Здесь пропущен знак равенства |
| 91 | Здесь пропущен знак присваивания |
| 92 | Здесь пропущена открывающая квадратная скобка или скобка с точкой |
| 93 | Здесь пропущена закрывающая квадратная скобка или скобка с точкой |
| 94 | Здесь пропущена точка |
| 95 | Здесь пропущены две точки |
| 96 | Размер глобальных переменных программы или локальных переменных подпрограммы превышает 64Кбайт |
| 97 | Неправильно параметр цикла FOR |
| 98 | Здесь должна быть переменная целого типа |
| 99 | Типизированная константа не может быть файлового или процедурного типа |
| 100 | Длина строковой константы не соответствует размеру массива символов |
| 101 | Порядок следования полей в типизированных константах типа-записи или типа объект а должен соответствовать порядку их следования при объявлении типа. |
| 102 | Здесь должна быть строковая константа |
| 103 | Здесь должна быть числовая переменная(целого или вещественной типа. |
| 104 | Здесь должна быть переменная порядковый тип |
| 105 | В подпрограмме с директивой Inline неправильно использован указатель размера |
| 106 | Здесь должно быть выражение символьного тип |
| 107 | Основная часть программы слишком велика. Следует часть ее выделить в подпрограммы |
| 108 | Переполнение при выполнении арифметической операции с числами целого типа |
| 109 | Стандартные процедуры Break или Continue используются вне циклов For While или Repeat |
| 110 | Превышены допустимые размеры таблицы отладочной информации(больше 64 кбайт) |
| 112 | Целая константа в операторе Case должна быть в пределах от -32768 до 32767 |
| 113 | Ошибка в операторе. |
| 114 | Нельзя непосредственно вызвать процедуру прерывания. |
| 116 | Типы Single, Double, Extended и Comp можно использовать только при наличии арифметического сопроцессора |
| 117 | При использовании команды меню Search|Find error нельзя найти оператор для заданного адреса |
| 118 | В данном месте нельзя использовать файл, подключаемый директивой($! filename). Оператор должен полностью находиться в одном файле. |
| 119 | Зарезервированное слово inherited использовано не внутри метода объекта или внутри метода объекта, у которого нет предков. |
| 121 | Неправильный квалификатор(попытка задать индекс у параметра, не являющегося массивом. |
| 122 | Неправильная ссылка на переменную(вероятно, взят указатель, в не величина, на которую он указывает) |
| 123 | В программе введено символов больше, чем 64Кбайт. Следует попробовать разделить программ на части. |
| 124 | Тело программы не может быть более 24Кбайт. Нужно выделить одну или несколько подпрограмм. |
| 126 | Файловую переменную можно передавать в подпрограмму только как параметр переменной |
| 127 | Слишком много символов у параметра условной компиляции |
| 128 | Пропущена директива компилятора |
| 130 | Параметры для условной компиляции, заданные строкой ввода |
| 131 | Полный заголовок подпрограмм не соответствует заголовку, объявленному с директивой forward, или заготовку в интерфейсной части модуля |
| 133 | Неправильно константное выражение или выражение, используемой в окнах отладки |
| 134 | Неправильно завершено выражение |
| 135 | Неправильный формат |
| 136 | Неправильная косвенная ссылка |
| 137 | Недопустимая операция над структурированными данными |
| 138 | Файл Turbo.tpl не включает модуль System |
| 139 | Нельзя получить этот символ |
| 140 | Переполнение при операциях с вещественными числами или деление на ноль |
| 141 | Программа, использующая оверлеи, должна быть скомпилирована на диск |
| 142 | Здесь должен быть указатель или переменная процедурного типа |
| 143 | Неправильный вызов процедуры или функции |
| 144 | Попытка использовать модуль в оверлейной программе, который не скомпилирован с директивой |
| 146 | Неправильное обращение к файлу(например, запись в файл, применяемый только для чтения, используется имя каталога, а не файл. |
| 147 | Здесь должна быть переменная типа объект |
| 148 | Нельзя определять переменную типа объект в подпрограмме |
| 149 | Этот метод быть виртуальным |
| 150 | Здесь должен быть идентификатор метода |
| 151 | Конструктор не может быть виртуальным |
| 152 | Здесь должен быть идентификатор конструктора |
| 153 | Здесь должен быть идентификатор деструктора |
| 154 | Процедура Fail вызвана не из конструктора, что недопустимо |
| 155 | Неправильный набор операндов у команды ассемблера |
| 156 | В команде ассемблера должна быть ссылка на память |
| 157 | Нельзя складывать или вычитать перемещаемые операнды в ассемблере |
| 158 | Неправильная комбинация регистров |
| 159 | Нельзя использовать команды для компьютеров 80286/80287 |
| 160 | Этот параметр нельзя использовать как операнд в команде ассемблера |
| 162 | Здесь должно быть зарезервированное слово asm |
Таблица 2 Сообщения об ошибках времени выполнения
| Номер ошибки | Комментарий |
| 1 | Вызов несуществующей функции DOS |
| 2 | Файл не найден |
| 3 | Не найден каталог |
| 4 | Нельзя открыть столько файлов. Число открываемых файлов определяется в config.sys |
| 5 | Неправильное обращение к файлу |
| 6 | Неправильный описатель файлов |
| 12 | Неправильный режим доступа к файлу |
| 15 | Неправильный номер накопителя |
| 16 | Нельзя удалить текущий каталог |
| 17 | Нельзя переименовать файл, изменив номер накопителя |
| 18 | Процедура Findfirst илиFindNExt не нашла файл |
| 100 | Попытка чтения из файла после достижения его конца |
| 101 | Ошибка при записи на диск, если он заполнен |
| 102 | Попытка работать с файлом, для которого не выполнена процедура Assign |
| 103 | Файл не открыт |
| 104 | Файл не открыт для чтения |
| 105 | Файл не открыт для записи |
| 106 | Недопустимый формат целого числа |
| 150 | Попытка записать на диск, защищенный от записи |
| 151 | Ошибка, формируемая драйвером |
| 152 | Внешнее устройство не готово |
| 154 | MS DOS определила ошибку в записанных на внешнее устройство данных |
| 156 | Ошибка, формируемая MS DOS при поиске данных на диске |
| 157 | MS DOS не может распознать тип диска |
| 158 | Ошибка, формируемая MS DOS при поиске данных на диске |
| 159 | В принтере отсутствует бумага |
| 160 | Ошибка на диске при записи |
| 161 | Ошибка на диске при чтении |
| 162 | Ошибка устройства ввода-вывода |
| 200 | Деление числа на ноль |
| 201 | Ошибка при контроле допустимого значения |
| 202 | Переполнение стека |
| 203 | Переполнения демонической памяти |
| 204 | Применение процедуры Dispose или FreeMem к незаданному указателю |
| 205 | Переполнение вещественного числа |
| 206 | Потеря значимости вещественного числа |
| 207 | Неправильная операция с вещественными числами |
| 208 | Диспетчер оверлеев не инициализирован |
| 209 | Ошибка при чтении оверлейного файла |
| 210 | Объект не инициализирован |
| 211 | Вызван абстрактный метод |
| 215 | Переполнение при арифметической операции |
| 216 | Неправильная попытка записать информацию в память |
[1] Далее, ТР – сокращение от Turbo Pascal
[2] «8» - символ обозначает клавишу Enter
[3] «8» - символ обозначает клавишу Enter
[4] [ ] обозначает необязательный параметр.






