Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

почему не работает 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.048 c
2-1169148215
malyar
2007-01-18 22:23
2007.02.04
idpop3.delete (удаление письма)


5-1147756149
Konnor
2006-05-16 09:09
2007.02.04
Combo+TreeView


2-1169130268
vitv
2007-01-18 17:24
2007.02.04
Построение запроса


2-1169198094
Steep
2007-01-19 12:14
2007.02.04
Flash Drive


15-1168833694
Slider007
2007-01-15 07:01
2007.02.04
С днем рождения ! 14 января