Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

почему не работает exit   Найти похожие ветки 

 
Ольчик   (2007-01-19 14:31) [0]

Привет! Подскажите, почему в консольном приложении у меня exit вызывал прерывание текущей процедуры, а в визуальном - нет? В справке написано, что exit - процедура из модуля system, я пыталась добавить его в список модулей, но пишет ошибку, что повторно переопределяется (redecleared), хотя нигде больше system нету.


 
Комбинатор   (2007-01-19 14:33) [1]

вызывай закрытие главного окна


 
Anatoly Podgoretsky ©   (2007-01-19 14:33) [2]

Учти одну вещь, компилятор не ошибается, так что можешь ему верить безоговорочно. А вот люди ошибаются, поэтому им не верь, особенно себе.


 
Anatoly Podgoretsky ©   (2007-01-19 14:34) [3]

Кстати модуль System подключать не надо, он уже подключен.


 
Ольга   (2007-01-19 14:35) [4]

мне не надо закрывать главное окно, мне надо вернуться управление в другую процедуру, откуда эту вызывала


 
Сергей М. ©   (2007-01-19 14:36) [5]


> в консольном
> в визуальном


В win32 нет понятия "визуальное приложение".
Либо оно консольное либо оно не консольное.


> exit вызывал прерывание текущей процедуры


ну не ври уже)

Не "прерывание", а завершение выполнения.

ПРиводи проблемный код с подробными комментариями, где и что у тебя там не славабогу ..


 
Vlad Oshin ©   (2007-01-19 14:38) [6]

Процедуру с приложением не путаете?
Выход из onButtonClick например, но не из приложения. В консольном, возможен, просто выход если IP не в теле процедуры
Код можно посмотреть?


 
Ольга   (2007-01-19 14:38) [7]

В одной процедуре
 while Possible do
 begin


В функции Possible

 for i := 1 to n do
   if not Visited[i] then
     exit;


 
Ольга   (2007-01-19 14:40) [8]

путаю, вы все правильно поправляете


 
Сергей М. ©   (2007-01-19 14:42) [9]


> В функции Possible


Ну и ?

При вызове Exit в теле ф-ции Possible() происходит, как и положено, ее завершение и возврат управления коду, ее вызвавшему.

А то что ты в своей ф-ции Possible() перед вызовом Exit не удосужилась установить результат ее завершения должным образом - это уже твоя проблема, а не проблема оператора Exit.


 
Vlad Oshin ©   (2007-01-19 14:43) [10]

а как определили что не выходит из процедуру?
поставте showmessage("");

for i := 1 to n do
  if not Visited[i] then     exit;
Showmessage("выхода не было");


 
Ольга   (2007-01-19 14:46) [11]

У меня полный текст функции Possible был:

 possible := True;
 for i := 1 to n do
   if not Visited[i] then exit;
 possible := False

Я думала, что первой строчки достаточно, чтобы установить результат функции даже на случай экзита.
А когда добавила такую строку на then перед exit, все заработало!
Не очень ясно, почему, но, все равно, большое спасибо!


 
Сергей М. ©   (2007-01-19 14:51) [12]


> первой строчки достаточно, чтобы установить результат функции
> даже на случай экзита.


Точно так-с.


> когда добавила такую строку на then перед exit, все заработало


Вот это

   if not Visited[i] then
    exit;

ничем не отличается от

   if not Visited[i] then exit;

p.s.
"А был ли мальчик ?" (С)

))


 
Ольга   (2007-01-19 14:53) [13]

да нет, я имела в виду, что теперь фукнция выглядит так:

 possible := True;
 for i := 1 to n do
   if not Visited[i] then
     begin
       possible := True;
       exit;
     end;
 possible := False


 
Сергей М. ©   (2007-01-19 14:55) [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:56) [15]

ну я тоже так думала, но почему-то начало работать.
честно, я больше ничего не меняла.
где-то в голове, наверное, у меня ошибка


 
Сергей М. ©   (2007-01-19 14:58) [16]

А даже если бы (что совершенно невероятно) и отличалось, нет никаких оснований для возникновения вопроса - Exit как работал, так и работает)


 
Ольга   (2007-01-19 14:59) [17]

а больше мне не на что было подумать


 
Ольга   (2007-01-19 15:02) [18]

не такой уж я специалист, чтобы хорошо разобраться в чем проблема, но ваша фраза

> не удосужилась установить результат ее завершения должным
> образом

привела к работоспособности программы.
Спасибо


 
Сергей М. ©   (2007-01-19 15:02) [19]

Есть такое слово - отладчик...


 
Ольга   (2007-01-19 15:05) [20]

а почему работает - кто его знает...
отладчик не помог.
вот можете объяснить, почему заработало?
ну и ладно.
не очень-то и хотелось.


 
Сергей М. ©   (2007-01-19 15:06) [21]


> Ольга   (19.01.07 15:02) [18]


см. [14]


 
Ольга   (2007-01-19 15:06) [22]

Но БОЛЬШОЕ СПАСИБО. Я не хотела грубить. Извините.


 
Сергей М. ©   (2007-01-19 15:07) [23]


> можете объяснить, почему заработало?


А что не работало-то ?

Еще раз повторяю - Exit как работал, так и работает)

Твоя "проблема" не имеет к корректности работы Exit, даже если в ней усомниться, ни малейшего отношения.


 
Сергей М. ©   (2007-01-19 15:12) [24]

Анекдот в тему:

Мужик в 12 ночи ползает вокруг фонарного столба на карачках.

- Мужик, ты что там ползаешь ?
- Да вот, ключи потерял ..
- А где потерял-то ?
- А я знаю ? Уходил из дома - были, домой пришел - нету ..
- Ну и какого ж ты ищешь свои ключи именно здесь ?
- А тут светлее !


 
Ольга   (2007-01-19 15:14) [25]

:)
Все приоритеты правильно расставил. Где легче - там и надо искать. А я добросовестно искала ошибку 15 минут. Потом форум показался мне более светлым местом, чем моя голова.


 
Сергей М. ©   (2007-01-19 15:16) [26]


> Ольга   (19.01.07 15:14) [25]


Ну если ты поняла, что с Exit-ом проблем никаких нет (хоть в консольном, хоть не в консольном), то это уже радует)


 
ors_archangel ©   (2007-01-19 20:47) [27]


> Сергей М.
> В 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, что тоже самое, что визуальный интерфей --> визуальное приложение (а не просто не консольное)? Т.е. программа запускается либо в консолькой подсистеме, либо в графической, запуск в графической разве не означает, что приложение можно отнести к графическому типу?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.042 c
15-1168944313
Ega23
2007-01-16 13:45
2007.02.04
Есть у кого тесты по Delphi?


15-1168652745
Tirael
2007-01-13 04:45
2007.02.04
наклон линии


15-1168847586
novill
2007-01-15 10:53
2007.02.04
D6 Вертикальное выделение, как отключить?


15-1168695294
vitv
2007-01-13 16:34
2007.02.04
Автоматическое копирование образа


3-1163579842
kulkse
2006-11-15 11:37
2007.02.04
Если сервер отключен (как обработать ошибку)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский