[C++] Wyłączenie komputera - sprawdzenie

Witam,

Proszę o sprawdzenie działania programu.

Kod programu

//---------------------------------------------------------------------------


#include 

#pragma hdrstop


#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TForm1 *Form1;

SYSTEMTIME czas,czaszam;

bool STOP=false;

bool halt=false;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

GetSystemTime(&czas);

CSpinEdit4->Value=czas.wHour+1;

CSpinEdit5->Value=czas.wMinute;

CSpinEdit6->Value=czas.wSecond;

Label1->Caption="Aktualny Czas"+IntToStr(czas.wHour+1)+":"+IntToStr(czas.wMinute)+":"+

IntToStr(czas.wSecond);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

GetSystemTime(&czas);

halt=false;


if(RadioButton1->Checked==true)

{

czaszam.wHour=czas.wHour+CSpinEdit1->Value ;

if (czaszam.wHour>=24){czaszam.wHour=czaszam.wHour-24;}

czaszam.wMinute=czas.wMinute+CSpinEdit2->Value;

if (czaszam.wMinute>=60){czaszam.wMinute=czaszam.wMinute-60;}

czaszam.wSecond=czas.wSecond+CSpinEdit3->Value;

if (czaszam.wSecond>=60){czaszam.wSecond=czaszam.wSecond-60;}

Label5->Caption="System zostanie wyłaczony o godzinie"+ IntToStr(czaszam.wHour+1)+":"+

IntToStr(czaszam.wMinute)+":"+IntToStr(czaszam.wSecond);


}

else

{

czaszam.wHour=CSpinEdit4->Value-1;

czaszam.wMinute=CSpinEdit5->Value ;

czaszam.wSecond=CSpinEdit6->Value;

Label5->Caption="system zostanie wyłączony o godzinie"+IntToStr(czaszam.wHour)+":"+

IntToStr(czaszam.wMinute)+":"+IntToStr(czaszam.wSecond);

}


while(!(czas.wHour && czas.wMinute==czaszam.wMinute &&

czas.wSecond==czaszam.wSecond))


{

for(;;){Application->ProcessMessages();

if(STOP!=false)

{STOP=false;

break;}}

GetSystemTime(&czas);

Label1->Caption="Aktualny czas" + IntToStr(czas.wHour+1)+":"+ IntToStr(czas.wMinute)+":"+

IntToStr(czas.wSecond);

if (halt==true){

break;}}

if (halt !=true)

{

WinExec("shutdown -f -s",SW_SHOW);

}        

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

halt=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

exit;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

STOP=true;         

}

//---------------------------------------------------------------------------

Mój problem polega na tym, że opcja “wyłącz o wskazanej godzinie” działa poprawnie, komputer się wyłącza, natomiast opcja “wyłącz po wskazanym czasie” w ogóle nie działa.

Proszę o sprawdzenie programu.

Zamieszczam rozmieszczenie obiektów na formie: http://img233.imageshack.us/img233/4637/programb.jpg

Dziękuję za pomoc.

  1. Nie wiedzieć czemu nie stosujesz TDateTimePicker, w którym podaje się czas w jednym polu i można pobrać to w formacie czasu - TDateTime.

  2. Pobieranie czasu systemowego najprościej zrealizować w postaci TDateTime czas=Now();

  3. Exit jest zbyt drastyczny, zastosuj - Close();

  4. Masz nieuzasadnione użycie pętli w Button1Click()