![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;
или в цикле
сначала пишут бряк а потом выполнение действия