Sprawdzenie dziłania programu

0

Witam,
Proszę o sprawdzenie działania programu.
Kod programu
[code]
//---------------------------------------------------------------------------

#include <vcl.h>
#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;
}
//---------------------------------------------------------------------------

[/code]

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.images...37/programb.jpg

Dziękuję za pomoc.

0

nie chce mi się analizować tego dość dziwnego formatowania, ale osobiście opcję z wyłączaniem po zadanym czasie zrealizowałbym w ten sposób, że zapisałbym sobie zadany czas w milisekundach, np.: 15 (1h 10min 5sek), zapisałbym sobie wewnętrznie jako: czas=(16060+10*60+5)*1000=4205000, następnie w momencie włączenia tego timera zapisałbym sobie wartość czaswylaczenia=GetTickCount()+czas; a komputer wyłączyłbym wraz z spełnieniem warunku: GetTickCount()>=czaswylaczenia, z tym że trzeba pilnować, żeby to polecen ie wykonało się dokładnie jeden raz, bo nie wiem jak zareaguje komputer na 100 poleceń wyłączenia w ciągu jeden sekundy (zakładając, że sprawdzasz czasy co np 10ms)

0

Co do rozmieszczenia obiektów na formie to wygląda to tak: http://img233.imageshack.us/img233/4637/programb.jpg

0

Dobra, widzę, że dla tego pana formatowanie nie istnieje.

//--------------------------------------------------------------------------- 
include <vcl.h>
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łączony o godzinie"+ IntToStr(czaszam.wHour+1)+":"+IntToStr(czaszam.wMinute)+":"+IntToStr(czaszam.wSecond); 
  } else { // Tutaj na początku był błąd (było "{" a powinno być "}")
    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; // Tutaj nie było średnika
    }
  }
  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;         
}
//---------------------------------------------------------------------------

0 użytkowników online, w tym zalogowanych: 0, gości: 0