C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Application->Terminate vs Exit, Есть ли разница
Schumi
Отправлено: 02.08.2005, 19:08


Машинист паровоза

Группа: Участник
Сообщений: 206



Раньше я всегда выходил из программы по команде exit(EXIT_SUCCESS).
Но недавно заметил странность: иногда бывает ситуация, что на некоторый начальный момент: динамически создаются некоторые вещи, а потом программа закрывается, до показа главной формы, на данный момент видна только сплэш-картинка. Бывает нужна такая необходимость: к примеру выдает сообщение и выходит.Так после этого — вроде как прога закрывается, исчезает из таскбара, но все же выскакивает пару раз ошибка (Win XP), что программа выполнила недопустимую ошибку. Судя по всему что-то не корректно удаляется, но это явно уже не мною удаляемо: потому что в отладке вызываются все деструкторы, и видно далее уже выполняется удаление вещей, с которыми я уже не могу оперировать. К примеру есть компонет SuperPuperToolBar — он далее удаляется и что-то видимо там не корректно происходит. По шагам я пройти не могу, т.к. я использую этот компонент (динамич. создаю) путем подключения obj и h. А если пытаюсь далее по шагам пройти, то она требует соответствующий pas файл, которого естественного у меня нет.
Я взял заменил exit на Application->Terminate, вроде перестали выскакивать ошибка. Но правильно ли это — по хэлпу посмотрел, как-то странно написано по этому поводу, может вообще нельзя этим закрывать приложение?
Boyko
Отправлено: 03.08.2005, 15:00


Станционный диспетчер

Группа: Участник
Сообщений: 88



QUOTE (Schumi @ 02/08/2005, 18:08)

Я взял заменил exit на Application->Terminate, вроде перестали выскакивать ошибка. Но правильно ли это — по хэлпу посмотрел, как-то странно написано по этому поводу, может вообще нельзя этим закрывать приложение?

Так надо НОРМАЛЬНО закрывать приложение в экстремной ситуации. Тогда выполняется все что надо.
Schumi
Отправлено: 03.08.2005, 17:15


Машинист паровоза

Группа: Участник
Сообщений: 206



QUOTE
Так надо НОРМАЛЬНО закрывать приложение в экстремной ситуации. Тогда выполняется все что надо.

А как нормально?

Отредактировано Schumi — 03/08/2005, 17:17
Boyko
Отправлено: 04.08.2005, 15:28


Станционный диспетчер

Группа: Участник
Сообщений: 88



QUOTE (Schumi @ 03/08/2005, 16:15)
А как нормально?

BCB Help:

Description

Call Terminate to end the application programmatically. By calling Terminate rather than freeing the application object, you allow the application to shut down in an orderly fashion.

Terminate calls the Windows API PostQuitMessage function to perform an orderly shutdown of the application. Terminate is not immediate.

Terminate is called automatically on a WM_QUIT message and when the main form closes.

Вернуться в Вопросы программирования в C++Builder