Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.007 c
3-33870
mihey
2002-10-22 12:49
2002.11.11
Закраска строк в DBGrid


14-34195
vopros
2002-10-21 11:52
2002.11.11
Вопрос на засыпку.


1-33983
Дмитрий К.К.
2002-11-01 08:46
2002.11.11
Еще раз о создании компонентов в RUN-TIME


1-34025
Sour
2002-11-02 12:46
2002.11.11
Алгорит разбора...


1-33961
Tea_pot
2002-11-01 00:55
2002.11.11
Пожалуйста киньте пример с хорошим таймером с точностью до мсек





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский