Ученик-кочегар
Группа: Участник
Сообщений: 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? Так и должно быть? Если да, то как прервать выполнение программы? |