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

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

Delphi пропускает строки кода при компиляции [D7, WinXP]


just ©   (2006-07-07 09:55:00) 

Добрый день.
 Не первый раз сталкиваюсь с ошибкой, Delphi пропускает строки кода при компиляции.
 Например:
begin
ModalResult:=mrOk;
exit;
end;
рядом с exit не ставится синяя точка, при выполнении форма не закрывается и при отладке строка пропускается :(
 Почему это происходит и как это вылечить?


Суслик   (2006-07-11 22:15:00) [1]

вот еще один недовольный оптимизатором http://qc.borland.com/wc/qcmain.aspx?d=29160

:)


Плохиш   (2006-07-11 13:57:00) [2]


> А для закрытия формы есть метод класса Close, как ни странно.

Явный вызов Close для модальной формы устанавливает свойство ModalResult в mrCancel. Это так предупреждение ;-)


IceBeerg   (2006-07-11 13:52:00) [3]

evvcom ©   (11.07.06 8:31) [13]
А для закрытия формы есть метод класса Close, как ни странно.

Но тут наверное всеже стоит использовать Hide, если конечно форма после не уничтожается и еще используется.


evvcom   (2006-07-11 08:31:00) [4]

> убрал exit. все работает!

что же у тебя не работало? exit в твоем коде ни на что не влиял. С ним не работало, а без него заработало? :)

> почему вы считаете, что в процедуре не надо писать exit?
> как форма узнает, что ей надо закрыться?

в этой не надо, где-то в другой, возможно, и надо. Но exit говорит не о том, что форма должна закрыться, а том, что здесь пора выходить из процедуры/функции. Exit - это конструкция языка и работает в любом методе/процедуре/функции не зависимо от принадлежности к классу формы. А для закрытия формы есть метод класса Close, как ни странно.


just   (2006-07-11 07:35:00) [5]

всем спасибо. убрал exit. все работает!
но все равно, были ситуации когда такое было при определении переменных...


KilkennyCat   (2006-07-11 07:09:00) [6]

> как форма узнает, что ей надо закрыться?

Этим и узнает:
ModalResult:=mrOk;

Вопрос абсолютно и полно и доходчиво и т.д. написан в справке Делфи...


just   (2006-07-11 07:03:00) [7]

отключение оптимизатора кода не помогло :(
почему вы считаете, что в процедуре не надо писать exit? как форма узнает, что ей надо закрыться?
кстати, когда-то это место нормально обрабатывалось...


Суслик   (2006-07-10 02:30:00) [8]

отключи оптимизацию и сделай полный билд - может поможет.


Чапаев   (2006-07-07 11:01:00) [9]


> > exit там лишний. А вообще закрой проект, удали из его
> папки
> > *.dsk и открой снова.
> Ага удали проект, удали Делфи, и не суйся в программисты?
>  :)

Зря хихикаешь. *.dsk таки обычно ответственны за неправильную расстановку "синих точек". Особенно часто такие пакости случаются при переносе проекта в другой каталог...


Desdechado   (2006-07-07 10:44:00) [10]

begin
ModalResult:=mrOk;
exit;
end;

Если это все содержимое процедуры, то exit смысла не имеет, о чем оптимизатор хорошо знает и выкидывает.


PSPF2003   (2006-07-07 10:41:00) [11]


> exit там лишний. А вообще закрой проект, удали из его папки
> *.dsk и открой снова.

Ага удали проект, удали Делфи, и не суйся в программисты? :)


Чапаев   (2006-07-07 10:23:00) [12]

exit там лишний. А вообще закрой проект, удали из его папки *.dsk и открой снова.


ЮЮ   (2006-07-07 10:11:00) [13]

>рядом с exit не ставится синяя точка
На exit, ИМНО, она никогда не станет? Поставь на предыдущую.


DrPass   (2006-07-07 10:09:00) [14]

Вдогонку:

> при выполнении форма не закрывается

Конкрентно это уже не связано с оптимизатором, а только с кривым кодом :)


DrPass   (2006-07-07 10:08:00) [15]


> Почему это происходит и как это вылечить?

Включен оптимизатор кода. На время отладки его стоит выключить (Project Options - Compiler - Optimization), и снова включить перед финальной сборкой


PSPF2003   (2006-07-07 10:04:00) [16]

А ты не чего не путаешь? А то обычно по напишут типа:

Begin
exit;
ModalResult:=mrOk;
end;

или в цикле

сначала пишут бряк а потом выполнение действия


Наверх

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