Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Arrays   Найти похожие ветки 

 
Nobody_1988   (2006-07-16 00:01) [0]

...
Map : array of array of integer;
...

procedure ...

SetLength(Map, 100, 100);

end.

Почему можно обратиться к элементам которых по идее нет
например - Map[99, -???] и к Map[99, ???]... глюк? или я что-то не понял...

Delphi 7.


 
S@shka ©   (2006-07-16 00:07) [1]

Разве SetLEngth (100) не деалет массив с индексами от 0 ... 99 ??


 
DrPass ©   (2006-07-16 00:38) [2]


> Почему можно обратиться к элементам которых по идее нет
>
> например - Map[99, -???] и к Map[99, ???]... глюк? или я
> что-то не понял...

Пока отключен Range cheсking, Delphi контроль за границами массивов оставляет целиком на твоей совести. Это не сложно, поверь :) А если сильно давит на сознание, включи Range Cheсking в настройках компилятора...


 
Nobody_1988   (2006-07-16 00:47) [3]

Разве SetLEngth (100) не деалет массив с индексами от 0 ... 99 ??

Можно обратиться например к Map[99, -400], но нельзя к Map[-400, 23]...


 
Nobody_1988   (2006-07-16 01:22) [4]

Пока отключен Range cheсking, Delphi контроль за границами массивов оставляет целиком на твоей совести. Это не сложно, поверь :) А если сильно давит на сознание, включи Range Cheсking в настройках компилятора...

Map[i, j]

Тоесть контроль за элементом i включен, а за элементом j нет?


 
DrPass ©   (2006-07-16 02:03) [5]


> Тоесть контроль за элементом i включен, а за элементом j
> нет?

Map - это массив массивов. В первом случае ты обращаешься к несуществующему элементу существующего массива, а во втором случае - к элементу несуществующего массива.


 
DrPass ©   (2006-07-16 02:08) [6]

Впрочем, "можно обратиться" - это громко сказано :) Просто в первом случае вероятность Access Violation не 100% - а как повезет в зависимости от состояния того блока памяти, куда ты залез, а во втором - 100%.
А с опцией Range Checking тебе не дадут обратиться к несуществующему элементу. Т.е. ты получишь всегда возникающую в таких непотребных случаях Range Check Error.


 
Ketmar ©   (2006-07-16 13:10) [7]

что обидно -- Range Checking влияет ещё и на арифметику. с ходу не вспомню, но натыкался на это: при переполнении целых (Integer) вылазило исключение. я громко ругался матом. %-)


 
Amoeba ©   (2006-07-17 12:03) [8]


> Ketmar ©   (16.07.06 13:10) [7]
> что обидно -- Range Checking влияет ещё и на арифметику.
>  с ходу не вспомню, но натыкался на это: при переполнении
> целых (Integer) вылазило исключение. я громко ругался матом.
>  %-)

Надо не обижаться, а благодарить за помощь.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
15-1152657553
Alx_
2006-07-12 02:39
2006.08.06
The security log on this system is full


1-1150905003
leonidus
2006-06-21 19:50
2006.08.06
Вопрос про указатели


4-1145014299
Sinka
2006-04-14 15:31
2006.08.06
Задний фон на TCustomObject (в частности на TTreeView)


2-1153302763
novill
2006-07-19 13:52
2006.08.06
Обработчик один - классы объектов разные, как объявить?


4-1145254631
Brother
2006-04-17 10:17
2006.08.06
Иконки рабочего стола





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский