Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Компилятор пропускает команду...

34K
13 марта 2008 года
HelloEverybody
5 / / 28.01.2008
Всем доброго времени суток! :)
Не первый раз сталкиваюсь с проблемой в Delphi, когда компилятор в процессе отладки (да и вообще) пропускает команду. Например в

procedure UpdateGraph(Anum, Number:integer);
var
...
num,i,j,maxi,jend:integer;
...
begin
...
i:=0;
j:=0;
...
Он переменной i присваивает ноль, а переменной j нет. В отладчике вообще пропускает эту строчку. При этом не ругается, как будто все в порядке... никак не пойму в чем дело?
Буду благодарен за совет!
276
13 марта 2008 года
Rebbit
1.1K / / 01.08.2005
Может ты ету переменную не используеш и компилятор просто оптимизировал код ?
34K
13 марта 2008 года
HelloEverybody
5 / / 28.01.2008
Цитата: Rebbit
Может ты ету переменную не используеш и компилятор просто оптимизировал код ?


как раз наоборот, после того как я ей присваиваю 0 (как в примере), с ней происходят другие операции (тоже присвоения), которые также игнорируются... :(

257
13 марта 2008 года
kosfiz
1.6K / / 18.09.2005
не вырывай из контекста, приведи фрагмент кода полностью(по возможности) с использованием этой переменной.
276
13 марта 2008 года
Rebbit
1.1K / / 01.08.2005
Цитата: HelloEverybody
как раз наоборот, после того как я ей присваиваю 0 (как в примере), с ней происходят другие операции (тоже присвоения), которые также игнорируются... :(


Присваивать можеш сколько угодно. Если ее не читаеш запросто соптимизирует :)
Или вот например
j := 0
j := 1 + 2 + 3; //не или чтото другое
a := j
Почему бы не пропустить первое присваивание ? Ведь первое присвоеное значение сразу же теряется. Попробуй просто отключить оптимизацыю. (Кажися в делфе такое можно). Вот и увидиш в этом ли причина :)

303
14 марта 2008 года
makbeth
1.0K / / 25.11.2004
Добавлю, что оптимизатор в Delphi весьма хороший ;)
HelloEverybody, если ты не проводишь никаких операций с данной переменной, кроме единственного присвоения он может ее воспринять просто как числовую константу, т.е. просто подставить число, которое ты присвоил данной переменной везде в код, где используется сама переменная. Да и на самом деле, зачем выделять в стеке место под константу? :)
Обрати внимание, если поработал оптимизатор, в отладчике вместо значения переменной должно быть примерно что-то:
Varaible j inaccessible due the optimization process.
34K
14 апреля 2008 года
HelloEverybody
5 / / 28.01.2008
Большое спасибо всем! Причина действительно была в оптимизаторе кода!
286
15 апреля 2008 года
misha_turist
572 / / 28.11.2005
Цитата: Rebbit
.........Попробуй просто отключить оптимизацыю. (Кажися в делфе такое можно).....


Либо в параметрах проекта, либо
{$O-} //Отключаем оптимизацию
{$O+} // Включаем оптимизацию

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог