![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Arrays [D7, WinXP]
Nobody_1988 © (2006-07-16 00:01:00)...
Map : array of array of integer;
...
procedure ...
SetLength(Map, 100, 100);
end.
Почему можно обратиться к элементам которых по идее нет
например - Map[99, -???] и к Map[99, ???]... глюк? или я что-то не понял...
Delphi 7.
Amoeba (2006-07-17 12:03:00) [1]
> Ketmar © (16.07.06 13:10) [7]
> что обидно -- Range Checking влияет ещё и на арифметику.
> с ходу не вспомню, но натыкался на это: при переполнении
> целых (Integer) вылазило исключение. я громко ругался матом.
> %-)
Надо не обижаться, а благодарить за помощь.
Ketmar (2006-07-16 13:10:00) [2]что обидно -- Range Checking влияет ещё и на арифметику. с ходу не вспомню, но натыкался на это: при переполнении целых (Integer) вылазило исключение. я громко ругался матом. %-)
DrPass (2006-07-16 02:08:00) [3]Впрочем, "можно обратиться" - это громко сказано :) Просто в первом случае вероятность Access Violation не 100% - а как повезет в зависимости от состояния того блока памяти, куда ты залез, а во втором - 100%.
А с опцией Range Checking тебе не дадут обратиться к несуществующему элементу. Т.е. ты получишь всегда возникающую в таких непотребных случаях Range Check Error.
DrPass (2006-07-16 02:03:00) [4]
> Тоесть контроль за элементом i включен, а за элементом j
> нет?
Map - это массив массивов. В первом случае ты обращаешься к несуществующему элементу существующего массива, а во втором случае - к элементу несуществующего массива.
Nobody_1988 (2006-07-16 01:22:00) [5]Пока отключен Range cheсking, Delphi контроль за границами массивов оставляет целиком на твоей совести. Это не сложно, поверь :) А если сильно давит на сознание, включи Range Cheсking в настройках компилятора...
Map[i, j]
Тоесть контроль за элементом i включен, а за элементом j нет?
Nobody_1988 (2006-07-16 00:47:00) [6]Разве SetLEngth (100) не деалет массив с индексами от 0 ... 99 ??
Можно обратиться например к Map[99, -400], но нельзя к Map[-400, 23]...
DrPass (2006-07-16 00:38:00) [7]
> Почему можно обратиться к элементам которых по идее нет
>
> например - Map[99, -???] и к Map[99, ???]... глюк? или я
> что-то не понял...
Пока отключен Range cheсking, Delphi контроль за границами массивов оставляет целиком на твоей совести. Это не сложно, поверь :) А если сильно давит на сознание, включи Range Cheсking в настройках компилятора...
S@shka (2006-07-16 00:07:00) [8]Разве SetLEngth (100) не деалет массив с индексами от 0 ... 99 ??