Форум: "Основная";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
ВнизConstant expression violates subrange bound Найти похожие ветки
← →
DelphiDummy (2002-11-02 13:59) [0]В программе есть вот такая строчка:
for i := 0 to 16 do MatrixV[0, i] := i;
При копиляции я получаю следующую ошибку:
[Error] mine.pas(97): Constant expression violates subrange bounds
Вопрос: почему?
P.S. Как только я исправляю MatrixV[0, i] на MatrixV[1, i], вс становится нормально. Но это неправильно.
← →
Юрий Зотов (2002-11-02 14:14) [1]Если бы Вы еще догадались, что для ответа на этот вопрос нужно знать, как объявлено MatrixV...
...то наверняка получили бы ответ. Скорее всего, примерно такой:
"Массив MatrixV объявлен так, что первый индекс его элемента не может быть нулем".
← →
DelphiDummy (2002-11-02 14:18) [2]Хорошо. Вот объявление массива MatrixV:
MatrixV: array [1..8, 1..16] of Integer;
Насколько я понимаю, массивы в Delphi объявляются именно так, и цифры 1..8 и 1..16 означают, что массив размера 8 на 16. Правильно?
Вопрос: почему, в таком случае, первый элемент массива не может быть нулем?
← →
Юрий Зотов (2002-11-02 14:22) [3]Элемент - может.
А его индекс - не может.
Вы же сами сказали компилятору, что первый индекс может меняться от 1 до 8. Разве ноль попадает в этот диапазон?
← →
Юрий Зотов (2002-11-02 14:25) [4]Кстати, при таком объявлении массива цикл от нуля тоже неверен.
← →
Anatoly Podgoretsky (2002-11-02 14:26) [5]DelphiDummy (02.11.02 13:59)
Это неправильно только в твоей голове, у тебя явно описано от 1 до 8 и от 1 до 16, так что же ты пытаешься обращаться к нулевому элементу, об этом тебе настойчиво говорит компилятор.
← →
DelphiDummy (2002-11-02 14:33) [6]В голове все правильно. Просто, насколько я знаю, цифры [1..8, 1..16] означают не возможные значения элементов массива, а просто размер, то есть, 8 на 16. По крайней мере, так было в Turbo Pascal`е, насколько я знаю. Или я не прав?
А в Delphi, получается, можно задать и [0..8, 0..16].
← →
Юрий Зотов (2002-11-02 14:40) [7]Не прав. В корне.
Что указано - то и должно быть. И в TP было так же. Например, что Вы скажете о таком объявлении:
var
MyArray: array[-17..4, boolean, "A".."N"] of integer;
А ведь оно правильное и для Delphi, и для TP.
← →
down (2002-11-02 14:45) [8]Анекдот в тему.
Ламер подходик к хакеру, протягивает исходники:
> - Где у меня ошибка?
> - В ДНК!!!
← →
down (2002-11-02 14:47) [9]Я имею в виду пост А. Подгорецкого, без обид
← →
DelphiDummy (2002-11-02 14:50) [10]Извините за глупый вопрос. :) Видимо, за три дня поиска ошибки в программе шифрования я настолько запарился, что даже такие вещи забыл. Юрий, Вы абсолютно правы. Спасибо! :)
Жалко только, что моя программа все еще не работает. Все тот же Access violation at address... :(((
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c