XXX=“;”: после последнего оператора не поставленна точка с запятой, либо если компилятор указывает на точку после последнего end программы, значит у вас не каждый begin закрывается словом end.
Out of memory
Переполнение памяти
Вы составили слишком сложную программу. Упростите её или попытай-тесь откомпилировать её из ДОС.
Identifier expected
Ожидается идентификатор
Забыли указать имя
Unknown identifier
Неизвестный идентификатор
Используется неописанная переменная или оператор записан неправильно
Duplicate identifier
Повторение идентификатора
Попытка определить имя второй раз
Syntax error
Синтаксическая ошибка
Недопустимая последовательность символов.
String constant exceeds line
Строковая константа определена не до конца
Строковая константа должна быть определена полностью на одной строке.
Unexpected end of file
Не найден конец программы
Забыли поставить последний end.
Line too long
Слишком большая строка
В одной строчке нельзя записывать больше 127 символов.
Error in type
Ошибка в типе.
Тип указан неверно.
Structure too large
Слишком большая структура
Определяемый тип требует больше 64 кб памяти, а этого не допускается
Type mismatch
Несовпадение типов
Переменной целого типа присвоено вещественное число.
Переменной строчного типа присваива-ется целое число или наоборот.
При вызове функции / процедуры перепутаны аргументы.
Invalid function result type
Неверный тип результата у функции
Функция может возвращать результат только стандартных типов (напр. integer).
Error in expression
Ошибка в выражении
Выражение записано неверно
(с ошибкой).
Division by zero
Деление на ноль
На ноль делить нельзя.
Cannot read or write variables of this type
Нельзя ввести/вывести переменную такого типа.
Некоторые переменные (например, массивы) нельзя вводить/выводить на экран используя оператор read/write.
Invalid FOR control variable
Переменную с этим типом нельзя использовать в цикле FOR
В цикле For можно использовать переменную только перечисляемого типа: integer, char или boolean. Либо вы пытаетесь записать в параметр цикла глобальную переменную.
Error in statement
Неправильное расположение
Нелогичное расположение оператора или служебного слова. Возможно, перед else была поставлена точка с запятой.
Хочу предупредить, что отсутствие синтаксических ошибок не гарантирует правильную работу программы, так как в программе могут оказаться логические ошибки (см. далее), а их компилятор найти не может, так как он не знает, чего вы хотите.
9.2. Ошибки выполнения
Эти ошибки возникают в процессе выполнения программы, при нарушении семантических правил языка Паскаль (то есть при попытке выполнить невозможное действие). Примером такой ошибки может быть деление на ноль, неверный ввод данных с клавиатуры и пр. В этом случае программа выдает сообщение
Run-time error <nnn> at <xxxx:yyyy>,
где nnn – номер ошибки, xxxx:yyyy - адрес в памяти, по которому произошла ошибка.
В таблице перечислены основные ошибки выполнения, включая ошибки работы с файлами.
Nr
Название
Перевод
Возможная причина
File not found
Файл не найден
Попытка открыть несуществующий файл.
Disk read error
Ошибка чтения с диска
Неправильно указан путь
Disk write error
Ошибка записи на диск
Неправильно указан путь
File not assigned
Файл не присвоен
Файловая переменная не связана с тем файлом, который вы хотите открыть
File not open for input
Файл не открыт для чтения
Забыли открыть файл с помощью reset
File not open for output
Файл не открыт для записи
Забыли открыть файл с помощью rewrite или append
Invalid numeric format
Неправильный формат числа
Неправильно введено число с клавиатуры.
Disk is write-protected
Диск защищен от записи
Division by zero
Деление на ноль
Range check error
Превышение границ
Обращение к несуществуемому элементу массива; попытка записать в переменную число, превосходящее её границы.
Stack overflow error
Переполнение стека
Многократный вызов рекурсивной процедуры.
9.3. Логические ошибки
Эти ошибки связаны с неправильным применением алгоритмических конструкций. В результате программа работает, но выдаёт неправильный результат. Например, если для обмена значений переменных a и b записаны такие операторы:
a := b;
b := a;
то программа выдаст неверный результат, хотя работать будет. Ошибки такого рода не могут быть обнаружены компилятором, так как компьютер не знает, что вам нужно. Однако система Turbo Pascal 7.0 имеет ряд средств отладки, которые значительно облегчают процесс поиска таких ошибок. К ним мы сейчас и перейдём.
9.4. Средства отладки
Речь пойдёт о возможностях отладки программ в IDE Turbo Pascal 7.0. Под отладкой понимают процесс поиска ошибок в программе. Для этого можно внимательно изучать текст программы, думать, как компьютер будет выполнять каждый оператор и т.д. и т. п. – прокручивая всё в голове. Если программа простая, то это достаточно лёгко и удобно, но при составлении достаточно сложных программ, когда текст превышает 100 строк, трудно держать всё в голове и приходится брать в помощники сам компьютер. IDE Turbo Pascal 7.0 позволяет выполнять программу пошагово, то есть останавливаться после выполнения каждой строчки. Это позволяет контролировать выполнение программы. В моменты остановок можно просматривать значения переменных и даже их изменять. Сейчас мы научимся это делать.
Для запуска программы в пошаговом режиме нужно нажать клавишу F8 или выбрать команду Step over (шаг через) из меню Run (запуск). Программа откомпилируется и на экране появится выделенная голубым цветом строка – так помечен оператор, который будет выполнен следующим. Для его выполнения надо нажать F8 или F7 (Trace into). 0тличие этих режимов заключается в том, что если выполнение этого оператора требует вызова какой-нибудь подпрограммы, то саму подпрограмму компьютер либо тоже выполняет пошагово (F7), либо пропустит её пошаговое выполнение (F8). Если вы уверены, что подпрограмма работает верно, то нажимайте F8.
Можно временно прекратить пошаговый режим. Для этого переместите курсор в то место, до которого вы хотите прервать пошаговое выполнение и нажмите F4 (команда "Go to cursor" из меню Run). Компьютер выполнит автоматически все операторы до строки указанной курсором. Эту клавишу удобно использовать, если в программе есть какие-либо циклы, которые выполняются много раз подряд.
Ещё одна возможность указать место перехода из автоматического режима к пошаговому – это установить “Break point” (точка останова) комбинацией клавиш Ctrl-F8. В том месте, где находится курсор появится красная строка. Теперь при любом запуске программы компьютер всегда остановится на отмеченной строке, если, конечно, эта строка будет выполняться. Далее всё как обычно – F7 или F8, либо Alt-F9 (Run) для продолжения работы программы в автоматическом режиме. Для удаления точки останова нужно перейти к отмеченной строке и опять нажать Ctrl-F8.
Учтите, что во время пошагового режима в программу нельзя вносить никаких изменений! Если вы попытаетесь это сделать, то перед выполнением следующего шага компьютер предупредит вас, что исходный текст был изменён. Вы можете продолжить работу в пошаговом режиме не смотря на это (изменения, естественно, не будут учтены), либо заново откомпилировать и запустить программу.
Для того чтобы прервать режим пошагового выполнения, нажмите Ctrl-F2 (команда “Program reset” из меню Run).
9.4.2. Просмотр/изменение переменных
В пошаговом режиме можно просматривать значения переменных. Для этого надо нажать Ctrl-F4 (команда “Evaluate/modify” из меню “Debug”). В появившемся окне ввести имя переменной и нажать Enter. Чуть ниже в поле “Result” (результат) появится её текущее значение. В случае необходимости в дальнейшем поле “New value” (новое значение) можно ввести новое значение, которое немедленно будет присвоено указанной переменной.
Это окно можно использовать и не только в пошаговом режиме, но и в обычном режиме ввода текста, как простой калькулятор. В поле “Expression” (выражение) введите арифметическое выражение и нажмите Enter. Компьютер посчитает его значение и выдаст его в поле “Result”.