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. |
|