![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
почему не работает exit [D6, XP]
Ольчик © (2007-01-19 14:31:00)Привет! Подскажите, почему в консольном приложении у меня exit вызывал прерывание текущей процедуры, а в визуальном - нет? В справке написано, что exit - процедура из модуля system, я пыталась добавить его в список модулей, но пишет ошибку, что повторно переопределяется (redecleared), хотя нигде больше system нету.
ors_archangel (2007-01-19 20:47:00) [1]
> Сергей М.
> В win32 нет понятия "визуальное приложение".Либо оно консольное
> либо оно не консольное.
SUBSYSTEM = DW NT Subsystem required to run this image.
The values are:
o 0000h __Unknown
o 0001h __Native
o 0002h __Windows GUI
o 0003h __Windows Character
o 0005h __OS/2 Character
o 0007h __Posix Character
Консольное, да - Windows Character, но разве Windows GUI - не означает Graphical User Interface, что тоже самое, что визуальный интерфей --> визуальное приложение (а не просто не консольное)? Т.е. программа запускается либо в консолькой подсистеме, либо в графической, запуск в графической разве не означает, что приложение можно отнести к графическому типу?
Сергей М. (2007-01-19 15:16:00) [2]
> Ольга (19.01.07 15:14) [25]
Ну если ты поняла, что с Exit-ом проблем никаких нет (хоть в консольном, хоть не в консольном), то это уже радует)
Ольга (2007-01-19 15:14:00) [3]:)
Все приоритеты правильно расставил. Где легче - там и надо искать. А я добросовестно искала ошибку 15 минут. Потом форум показался мне более светлым местом, чем моя голова.
Сергей М. (2007-01-19 15:12:00) [4]Анекдот в тему:
Мужик в 12 ночи ползает вокруг фонарного столба на карачках.
- Мужик, ты что там ползаешь ?
- Да вот, ключи потерял ..
- А где потерял-то ?
- А я знаю ? Уходил из дома - были, домой пришел - нету ..
- Ну и какого ж ты ищешь свои ключи именно здесь ?
- А тут светлее !
Сергей М. (2007-01-19 15:07:00) [5]
> можете объяснить, почему заработало?
А что не работало-то ?
Еще раз повторяю - Exit как работал, так и работает)
Твоя "проблема" не имеет к корректности работы Exit, даже если в ней усомниться, ни малейшего отношения.
Ольга (2007-01-19 15:06:00) [6]Но БОЛЬШОЕ СПАСИБО. Я не хотела грубить. Извините.
Сергей М. (2007-01-19 15:06:00) [7]
> Ольга (19.01.07 15:02) [18]
см. [14]
Ольга (2007-01-19 15:05:00) [8]а почему работает - кто его знает...
отладчик не помог.
вот можете объяснить, почему заработало?
ну и ладно.
не очень-то и хотелось.
Сергей М. (2007-01-19 15:02:00) [9]Есть такое слово - отладчик...
Ольга (2007-01-19 15:02:00) [10]не такой уж я специалист, чтобы хорошо разобраться в чем проблема, но ваша фраза
> не удосужилась установить результат ее завершения должным
> образом
привела к работоспособности программы.
Спасибо
Ольга (2007-01-19 14:59:00) [11]а больше мне не на что было подумать
Сергей М. (2007-01-19 14:58:00) [12]А даже если бы (что совершенно невероятно) и отличалось, нет никаких оснований для возникновения вопроса - Exit как работал, так и работает)
Ольга (2007-01-19 14:56:00) [13]ну я тоже так думала, но почему-то начало работать.
честно, я больше ничего не меняла.
где-то в голове, наверное, у меня ошибка
Сергей М. (2007-01-19 14:55:00) [14]
> Ольга (19.01.07 14:53) [13]
Вот это
possible := True;
for i := 1 to n do
if not Visited[i] then
begin
possible := True;
exit;
end;
possible := False
принципиально ничемне отличается от
possible := True;
for i := 1 to n do
if not Visited[i] then exit;
possible := False
??
Ольга (2007-01-19 14:53:00) [15]да нет, я имела в виду, что теперь фукнция выглядит так:
possible := True;
for i := 1 to n do
if not Visited[i] then
begin
possible := True;
exit;
end;
possible := False
Сергей М. (2007-01-19 14:51:00) [16]
> первой строчки достаточно, чтобы установить результат функции
> даже на случай экзита.
Точно так-с.
> когда добавила такую строку на then перед exit, все заработало
Вот это
if not Visited[i] then
exit;
ничем не отличается от
if not Visited[i] then exit;
p.s.
"А был ли мальчик ?" (С)
))
Ольга (2007-01-19 14:46:00) [17]У меня полный текст функции Possible был:
possible := True;
for i := 1 to n do
if not Visited[i] then exit;
possible := False
Я думала, что первой строчки достаточно, чтобы установить результат функции даже на случай экзита.
А когда добавила такую строку на then перед exit, все заработало!
Не очень ясно, почему, но, все равно, большое спасибо!
Vlad Oshin (2007-01-19 14:43:00) [18]а как определили что не выходит из процедуру?
поставте showmessage('');
for i := 1 to n do
if not Visited[i] then exit;
Showmessage('выхода не было');
Сергей М. (2007-01-19 14:42:00) [19]
> В функции Possible
Ну и?
При вызове Exit в теле ф-ции Possible() происходит, как и положено, ее завершение и возврат управления коду, ее вызвавшему.
А то что ты в своей ф-ции Possible() перед вызовом Exit не удосужилась установить результат ее завершения должным образом - это уже твоя проблема, а не проблема оператора Exit.
Ольга (2007-01-19 14:40:00) [20]путаю, вы все правильно поправляете