Wywołanie funkcji o określonej godzinie

dział ogólny

Wywołanie funkcji o określonej godzinie

Nowy postprzez sawcioo » poniedziaÅ‚ek, 5 kwietnia 2010, 17:14

Czy znacie jakiś sposób na wywołanie konkretnej funkcji o podanej przez użytkownika godzinie? Zastanawiałem sie na dodaniem timera który ustawiał by swój interval na podstawie aktualnej godziny, ale co w przypadku gdy użytkownik zaplanuje kilka zadan(wywolan funkcji) w rożnych lub tych samych godzinach?
Avatar użytkownika
sawcioo
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): piątek, 16 października 2009, 18:42
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    Windows 7Firefox

Re: Wywołanie funkcji o określonej godzinie

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 5 kwietnia 2010, 18:26

Program powinien sprawdzać w określonych odstępach czasu aktualną godzinę i porównywać ją z zadaną godziną. Może to robić w zdarzeniu OnTimer obiektu Timer w odstępach minutowych. Samo sprawdzanie godziny może okazać się niewystarczające, dlatego należałoby sprawdzać godzinę i minutę, zakładając, że program ma to robić z dokładnością do minuty:

Kod: Zaznacz cały

int hour 
10// zdana godzina
int min 45// zadan minuta

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 
SYSTEMTIME sTime;
 
GetLocalTime(&sTime); // pobiera aktualny czas systemu

 
if(sTime.wHour >= hour)
 {
   if(
sTime.wMinute >= min)
   {
     
// tutaj umieszczamy funkcjÄ™ która ma być wywoÅ‚ana
   
}
 }  
}
 


Jeżeli tych czasów ma być więcej, to należy je gdzieś umieszczać, można zapamiętywać w pliku i wczytywać do listy typu TStringList, potem z wykorzystaniem pętli porównywać wszystkie zapisy w zdarzeniu OnTimer. Zapis godziny w pliku musi być zawsze tak samo formatowany, przykład z wypełnioną listą:

Kod: Zaznacz cały

TStrings 
*timeList = new TStringList;
timeList->Add("19:18");
timeList->Add("11:15");
timeList->Add("13:5");
timeList->Add("20:25");
 
SYSTEMTIME sTime;
 
GetLocalTime(&sTime);

 for(
int i 0timeList->Counti++)
 {
  
String hTekst timeList->Strings[i];
  
int p hTekst.Pos(":");
  
int hour = (hTekst.SubString(01)).ToInt();
  
int min  = (hTekst.SubString(12)).ToInt();

  if(
sTime.wHour == hour)
  { 
   if(
sTime.wMinute == min)
   {
     
// wywoÅ‚aj funkcjÄ™
   
}
  }
 } 
}
 


To tyle jeżeli chodzi o sprawdzanie czasu, gdyż zadanie wymaga jeszcze opracowania funkcji, która będzie o określonym czasie wykonywać określone zadanie. Zadanie również powinno być przechowywane w pliku obok godziny i wykonywane przez funkcję. Funkcja wykona tylko zadania pre-definiowane w programie, czyli program musi mieć zaprogramowane zadania do wykonania. No ale przecież to Ty piszesz ten program nie ja. Na pytanie odnośnie czasu już odpowiedziałem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 18 gości

cron