Ошибки при использовании массивов
При использовании массивов наиболее распространенной ошибкой является выход значения индексного выражения за допустимые границы, указанные при объявлении массива.
Если в качестве индекса используется константа, и ее значение выходит за допустимые границы, то такая ошибка обнаруживается на этапе компиляции программы. Например, если в программе объявлен массив
day : array[0..6] of string[ll],
то во время компиляции программы инструкция
day [7] := 'Воскресенье';
будет помечена как ошибочная.
Если для доступа к элементу массива в качестве индекса используется переменная или выражение, то возможно возникновение ошибки (исключения) времени выполнения программы. Например, если в программе объявлен массив
tab1: array [1..N] of integer;
то инструкция
for i:=0 to N do tab1[i] := 5;
формально является верной, и ее компиляция будет успешно выполнена.
Однако во время выполнения программы, при попытке присвоить значение несуществующему нулевому элементу массива tab, на экран будет выведено сообщение об ошибке. Вид окна и текст сообщения зависит от того, откуда запущена программа.
При запуске рассматриваемой программы из Delphi возникает исключение, и сообщение имеет вид, приведенный на рис. 5.22.
Рис. 5.22. Сообщение
об ошибке при обращении к несуществующему элементу массива (программа запущена
из Delphi)
Рис. 5.23.
Сообщение об ошибке при обращении к несуществующему элементу массива (программа
запущена из Windows)
Для того чтобы программа контролировала значения индексных выражений (в этом случае Delphi добавляет в выполняемую программу инструкции, обеспечивающие этот контроль), необходимо на вкладке Compiler диалогового окна Project Options, которое открывается выбором из меню Project команды Options, установить флажок Range checking (Контроль диапазона), находящийся в группе Runtime errors (Ошибки времени выполнения) (рис. 5.24).
Рис. 5.24. Вкладка Compiler диалогового окна Project Options
Назад | Содержание |