При використанні масивів найбільш поширеною помилкою є вихід значення індексного виразу за допустимі межі, зазначені при оголошенні масиву.
Якщо в якості індексу використовується константа, і її значення виходить за допустимі межі, то така помилка виявляється на етапі компіляції програми. Наприклад, якщо в програмі оголошений масив
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)
Якщо програма запущена з Windows, то при спробі привласнити значення неіснуючого елементу масиву на екран буде виведено повідомлення Range check error (помилка контролю діапазону). У заголовку вікна буде вказано назву програми, в процесі виконання якого сталася помилка (рис. 5.23).
Рис. 5.23. Повідомлення про помилку при зверненні до неіснуючого елементу масиву (програма запущена з Windows)
Поведінка програми при виході індексного виразу за межі діапазону допустимих значень визначається налаштуванням компілятора.
Для того щоб програма контролювала значення індексних виразів (в цьому випадку Delphi додає в виконувану програму інструкції, що забезпечують цей контроль), необхідно на вкладці Compiler діалогового вікна Project Options, яке відкривається вибором з меню Project команди Options, встановити прапорець Range checking (Контроль діапазону), що знаходиться в групі Runtime errors (Помилки часу виконання) (рис. 5.24).
Рис. 5.24. Вкладка Compiler діалогового вікна Project Options