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

 
Application->Terminate(), Верно ли работает функция?
AdeLka
Отправлено: 21.09.2006, 13:14


Ученик-кочегар

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



Здраствуйте. Поясните, пожалуйста, как работает функция Application->Terminate. Была уверена, что она завершает работу программы, не выполняя операторов, описанных после ее вызова.

Ниже код метода TestNumDevices, в котором происходит вызов Application->Terminate() и метода, в котором вызывается TestNumDevices.

void TMain::TestNumDevices(bool init)
// вход: init — флаг, определяющий в какой момент проверяются подключ. устройства
// (при запуске программы или по нажатию кнопки "Обновить")
{
SI_STATUS status;
DWORD dwNumDevices;

status = SI_GetNumDevices(&dwNumDevices);
if(status == SI_DEVICE_NOT_FOUND)
{ Application->MessageBox("Не обнаружено подключенных карт памяти.", "Программа копирования", MB_OK + MB_ICONERROR);
Application->Terminate(); }
}

void __fastcall TMain::FormShow(TObject *Sender)
{
int i;
SI_DEVICE_STRING devStr;

IdentifForm->Show();
TestNumDevices(1);

if( SI_GetProductString(0, devStr, SI_RETURN_DESCRIPTION) == SI_SUCCESS)
DeviceName->Text = devStr;

InitDevice();
IdentifForm->Close();
}

Почему при вызове Application->Terminate() и выходе из TestNumDevices продолжается выполнение операторов функции FormShow? Так и должно быть? Если да, то как прервать выполнение программы?
AVC
Отправлено: 21.09.2006, 13:41


Ветеран

Группа: Модератор
Сообщений: 1583



Вопрос по Application->Terminate()

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