![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переменная по STEPу [D7, Win95/98, WinXP]
ASoft © (2004-08-06 04:43:00)Здравствуйте!
В процедуре OnMouseUp я использую цикл
For i : = 0 to m do
If PtinRect(MyRect(XX,YY,Width,Height),
point(MyOb.X, MyOb.Y)) then
begin
.....
end;
{ m=, например, 10,
MyRect - функция, MyOb - объект на экране(окне) }
При рохождение цикла в STEP(по F7), переменная i равна
совсем не тому, что должно, по идее, т.е. не 0-10, а большим
положительным числам. В чем тут может быть
ошибка? В каких случаях такое может происходить?
Спасибо
Digitman (2004-08-06 10:06:00) [21]
> ASoft (06.08.04 09:55) [7]
если оченьпостараться, то испоганить можно все что угодно
но если в вызванной в теле цикла п/программе ты не трогаешь РОН (или трогаешь с умом и полным пониманием дела) , то это никоим образом не повлияет на переменную цикла
ASoft (2004-08-06 09:55:00) [22]Бином Ньютоныч >>, TUser >>
Спасибо за ответы. В целом понятно.
Естественно, в цикле переменную-счетчик я не меняю,
да и Delphi подскажет, если это произойдет.
Может ли переменная-счетчик измениться (скажем, сброситься),
если в цикле временно управление передается другой, не
вложенной процедуре.
TUser (2004-08-06 09:08:00) [23]Да еще если цикл закончится, то значение его loop variable будет любым, даже если внутри цикла от нее что-то зависит.
Бином Ньютоныч (2004-08-06 08:20:00) [24]Цикл может не работать, если ты в его теле меняешь переменную цикла.
Значение переменной будет мняться в соответствии с твоим паскаль-кодом только если от ее значения зависит логика работы в теле цикла. Например, если логика требует прохождения по списку именно в определенном программистом порядке. В остальных случаях компилятор придерживается правила: не важно, каково текущее значение переменной, главное, чтобы количество итераций точно соответствовало заданному программистом.
Так как компилятор не может точно определить, когда необходимо соответствие переменной заданному тобой, то в НЕКОТОРЫХ случаях она изменяется соответственно написанному тобой, даже если от ее значения ничего не зависит. Или когда компиляор считает заданный программистом порядок итераций оптимальным.
ASoft (2004-08-06 07:29:00) [25]Кшд >> [3]
Очевидно, я чего-то не пойму!
Причем тут компилятор?
Ведь в других случаях циклы, с использованием
переменной-счетчика, по F7 показывают нормальный
отсчет (наводишь курсором на счетчик - результат переменной, в моем случае, это хаотичный набор цифр). Вот почему я и спрашиваю в каких случаях может быть, что счетчик не работает?
Объясните, пожалуйста.
Кшд (2004-08-06 07:09:00) [26]ASoft (06.08.04 07:06) [2]
цикл выполняется правильно
не нравится работа оптимизатора - отключите в Project->Options
ASoft (2004-08-06 07:06:00) [27]Бином Ньютоныч >>[1]
В таком случае, цикл выполняется не правильно, точнее,
не выполняется? И что же делать?
Бином Ньютоныч (2004-08-06 06:52:00) [28]Нет никакой ошибки. Переменная цикла нигде более не используется, поэтому компидятор волен распоряжаться ею таким образом, который считает наиболее оптимальным.