![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Zeit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Проблема в том, что при отладке, через ф10 все работает нормально и когда numberOfPagesBefore не равно numberOfPagesAfter, то в цикл в иф заходит, а когда запускаю релиз, то входит не всегда. хоть убейте, но я не пойму почему(( входные данные одинаковые, а результат при ф10 и релизе разный! |
|||
|
||||
| tol05 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
В релизе работает оптимизатор кода...
компилятор просчитывает варианты оптимизации, он видит, что numberOfPagesBefore == numberOfPagesAfter, поэтому просто убирает все эти проверки из кода... Тоже самое, кстати, часто случается в ситуациях типа
код типа
превратится в
и т.д. если ты хочешь, чтоб в релизе остался твой кусок кода обязательно, нужно в свойствах проекта (вкладка Build) отключить оптимизацию. Посмотри, на Debug галочка не стоит, а на Release - стоит. -------------------- На хорошей работе и сны хорошие снятся. |
||||||
|
|||||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
проблема точно не в этом, компилятор не может такой вариант просчитать, aDoc.Content.get_Information мало того что не может возвращать гарантированно константное значение, так плюс к этому вообще взаимодействует с внешним active-x объектом, по отношению к среде .net. JIT-компилятор тоже такое упразднить не может. Zeit, что за код на месте "<бла-бла>"? -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
если в <бла-бла> numberOfPagesBefore не получает нового значения (а это компилятор может просчитать), то
т.е. компилятор даже не будет анализировать (да он и не умеет этого) вызовы функций, просто х.MyFunction(y) всегда равно х.MyFunction(y) если х и y не изменились. Это сообщение отредактировал(а) tol05 - 13.6.2007, 09:31 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Zeit, отлаживать все-таки нужно в Debug-конфигурации. Release - он на то и Release, что его не нужно уже отлаживать.
tol05, насчет последнего высказвания позволь не согласится компилятор вызовы этих функций не выкидывает. Иначе
компилятор опять будет считать, что dateBefore == dateAfter? ;) -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| Zeit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Код на месте <бла-бла> такой:
Дело в том, что numberOfPagesBefore и numberOfPagesAfter равны не всегда, на каждый, наверное, третий шаг они не равны. вот в этом-то вся и проблема( Нет, вы немножко не поняли. Если без ф10, то он в дебаге некорректно работает. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Naum, компилятор C# - нет (MSIL версий Debug и Release в этом плане не сильно отличается), а JIT - компилятор - вполне Ведь даже в дебаге, хоть релиз, хоть дебаг, а код-то через JIT пропускается, не так ли? К тому же, разные версии компиляторов работают очень по-разному... Ну да ладно, я могу ошибаться P.S. Все, понял, нашел
Вот почему в релизе нельзя остановится в цикле Это сообщение отредактировал(а) tol05 - 13.6.2007, 12:31 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| archeg |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 11 Всего: 27 |
JIT компилирует только один раз, после этого закомпиленый нейтив работает как в кеше - соответственно он не может быть уверен что (int)aDoc.Content.get_Information(WdInformation.wdActiveEndAdjustedPageNumber) не возвращает например рандомное значение - а значит может быть как равно так и не равно. Он не должен убирать условие. Zeit, попробуй как-то код поменять, сделать чуть по-другому - всякое бывает, может баг JIT -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Каждый раз при дебаге создается новый процесс, что хорошо видно в студии через окошко "Output -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Zeit, попробуй в качестве теста после строчки PasteImage(aDoc, Find(aDoc, "<bmp>"), files[i]) вставить Thread.Sleep(1000), а лучше:
.. может быть некоторые операции ворд асинхронно выполняет. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Zeit |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
cully, спасибо! Проблема решена и можно смело сдавать курсовик =)
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |