![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Влияние позиции переменной в разделе var на работу программы [D6, D7, XP]
Pasha L © (2007-01-13 21:53:00)Здравствуйте. Вчера я написал о странной ошибке, которая вылезала до тез пор пока я не отрубил оптимизатор. Затем стала появляться ещё одна ошибка. Тоже немного странная :) . циклы
for y:=0 to y2 do
for x:=0 to x2 do
выполнялись, но на какой-то стадии x2 принимала какое-то черт знает откуда взятое значение... x2 я нигде не менял и это точно. И вот, получил доказательство своей правоте: в разделе var, в ряду объявления переменных типа integer я взял, и переместил x2 и y2 с последних позиций на 3-ю и 4-ю. Ошибка не выползает. Я проверил несколько раз: поперемещал туда-сюда. По-моему, это похоже на какую-то глупость, но то, вылезет ошибка или нет, зависит от позиции переменной в варе. В чем дело, кто знает?
Sha (2007-01-13 22:37:00) [1]Поздравляю
Pasha L (2007-01-13 22:34:00) [2]Так, уважаемые ребята. Я понял в чем дело. В циклах я изменял значения переменных находящихся по адресам несуществующих элементов массива. В этом было дело.
Sha (2007-01-13 22:33:00) [3]> Pasha L © (13.01.07 21:53)
> это похоже на какую-то глупость,
Это похоже на выход за границу массива
Опцию компилятора "Range checking" включи
> но то, вылезет ошибка или нет, зависит от позиции переменной в варе
Ты просто не всегда замечаешь ошибку
Pasha L (2007-01-13 22:24:00) [4]antonn © (13.01.07 21:56) [1]
всё это происходит в процедуре. Вар в той же процедуре. Весь код?... он очень большой... Я думаю, что тут не в коде самом дело. Мне кажется, что такого рода проблема как бы хрестоматийная, потому что редкая и очень странная (как мне кажется). Могу скинуть весь проэкт :)
ors_archangel (2007-01-13 22:07:00) [5]
> . Затем стала появляться ещё одна ошибка. Тоже немного странная
И что это за новая ошибка? В [0] ты опять описал старую. Ты уверен, что переменные у тебя всегда var'овые? А вообще, зачем тебе пускать ограничения цикла по ссылке, ты их меняешь? Где?
Zeqfreed (2007-01-13 22:04:00) [6]Телепатирую: использовал значения счетчиков за пределами циклов?
antonn (2007-01-13 21:56:00) [7]в каком именно "варе"? весь код дай