![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
LamerTM |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 Репутация: нет Всего: 0 |
Брейкпоинт поставить на первую строку процедуры CF. Запустить, нажать Button1. Потом пару раз F7. Глюк дебагера такой: неправильно отображается значение переменной i в процедуре CF во время выполнения цикла. Первое значение должно быть 1 (по факту и есть 1), но дебагер в хинте показывает i=25. На следующей итерации i=24, потом i=23, и т.д. выглядит это прикольно. Например так: ![]() Такой глюк у меня в Delphi 7 и в Delphi 2005. Ну а вопрос: в каких делфях такого глюка нет (может в 2007?) Это сообщение отредактировал(а) LamerTM - 16.1.2009, 12:10 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
это не глюк, а результат оптимизации. если в теле цикла сделать к примеру Caption := inttostr(i) то все встанет на место. А раз ты не используешь в теле цикла переменную, то компилятор вполне логично считает что тебе важно только количество итераций, но не последовательность значений
-------------------- Обижено школьников: 8 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
а этого-то я и не заметил
Тогда присоединяюсь к топикстартеру, что бы это могло быть? -------------------- Обижено школьников: 8 |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
не нравится убери оптимизацию!
PS по вопросу , процу легче циклы считать от числа к нулю , ибо ноль сразу устанавливат флаг нуля , т.е. без доп. телодвижений можно ноль или нет и сразу делать то что нужно -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Romikgy, то что ты говоришь мне известно, но помнится это поведение отключалось при любом использовании переменной в теле цикла. У топикстартера есть такое использование поэтому имхо это сомнительная оптимизация.
-------------------- Обижено школьников: 8 |
|||
|
||||
СЭНСЭЙ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
и что - так и не нашли решение?
беда в том, что значение переменной идет в обратном порядке при дебаге, а если в цикле есть код типа
то в условии подставляется 1 , а при вычислении - 3 это ни в какие ворота не лезет какая может быть оптимизация? Что с этим делать? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Эта оптимизация называется разворот цикла. Операция сравнения с нулем производится быстрее чем с некоторым числом, поэтому большинство компиляторов если видят что от порядка ничего не меняется, разворачивают цикл в обратном направлении. Как там сейчас в новых делфях я не в курсе, но по идее когда проект компилируется в режиме дебага так не должно быть, но в старых версиях оптимизация включалась и в дебаге, так что приходилось ее отключать ключом {$O-} . Думаю это поможет. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |