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

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

почему не работает exit [D6, XP]


Страницы:   1 2

Ольчик ©   (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]

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


Страницы:   1 2

Наверх

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