Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Переменная по STEPу [D7, Win95/98, WinXP]


Страницы:   1 2

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]

Нет никакой ошибки. Переменная цикла нигде более не используется, поэтому компидятор волен распоряжаться ею таким образом, который считает наиболее оптимальным.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо