Необъявленный идентификатор

Рейтинг: -1Ответов: 1Опубликовано: 06.11.2014

Подскажите, почему пишет, что необъявленный идентификатор, ведь я всё объявил?

var    
   n,m:integer;   
   massivCHisel : array [ n,m ] of integer;

Ошибку выдаёт в массиве "array [ n,m ]".

Ответы

▲ 6

Дело тут вот в чем. В отличие от Си-подобных языков в pascal/delphi объявление массива подразумевает указание не размера массива, а начального и конечного индексов. То есть если вам нужен двумерный массив размером n х m то объявлять его следует так:

massivCHisel : array [1..n, 1..m] of integer;

если же вы хотели создать одномерный массив с индексами от n до m, то так:

    massivCHisel : array [n..m] of integer;

Но и это еще не все. Подобное объявление массива предполагает, что значения его индексов известно на этапе компиляции, то есть вышеприведенные записи по-прежнему не будут верными, поскольку m и n являются не константами, а переменными. Чтобы пример компилировался, вам нужно сделать что-то наподобие:

const n = 5;
      m = 6;
var massivCHisel : array [1..n, 1..m] of integer;

Если же вас интересует иименно возможность задания границ массива с помощью переменных, то вам имеет смысл посмотреть в сторону динамических массивов