Delphi – Hibernacija aplikacija

Po Vujakliji („Leksikon stranih reฤi i izraza“ Milana Vujaklije) reฤ „hibernacija“ potiฤe od holandske reฤi hibernatio, a oznaฤava (u zoologiji) zimski san nekih toplokrvnih ลพivotinja. Verovatno se pitate, kakve to sad veze ima sa programiranjem. Pa, ima: stanjem „hibernacije aplikacije“ moลพemo nazvati period (od nekoliko sekundi do nekoliko sati, dana) u kome aplikacije stoje, ne procesirajuฤ‡i niลกta, sve do sledeฤ‡eg zadatka (funkcije programa). U meฤ‘uvremenu, dok aplikacija ฤeka (na stand by-u), u pozadini ฤ‡e Windows odraฤ‘ivati neke druge procese. Naลพalost, sam Delphi ne poseduje jednu ovakvu funkciju koja moลพe da „uspava“ aplikaciju na neko vreme.

Ipak, stari dobri „Turbo Pascal“ poseduje nekakav ekvivalent ovoj funkciji, a to je instrukcija delay, o kojoj u objektnom Pascal-u nema nikakve dokumentacije. Poลกto Delphi ne poseduje ovakvu funkciju, sami ฤ‡emo je izgraditi, a nazvaฤ‡emo je „Spavaj()“

Za „uspavljujuฤ‡u“ funkciju iskoristiฤ‡emo Windows API funkciju zvanu „GetTickCount“, koja vraฤ‡a broj milisekundi (hiljaditi deo sekunde) koje su protekle od momenta startovanja Windows-a. Ako zavirite u WinAPI dokumentaciju pronaฤ‡i ฤ‡ete podatak da se ovaj svojevrsni brojaฤ resetuje na nulu, i to nakon 49 dana. Tako da ako ciljna maลกina radi non-stop, „spavaฤka“ funkcija biฤ‡e aktivna 49 dana. Evo sada i programskog koda same funkcije:


procedure Spavaj(SekSpavanja : Integer);
var
PocetnaVred : LongInt;
begin
PocetnaVred := GetTickCount;
While ((GetTickCount – PocetnaVred) <=
(SekSpavanja * 1000)) do
Application.ProcessMessages;
end;

Da biste upotrebili ovu funkciju, biฤ‡e dovoljno da je pozovete sa prosleฤ‘enim brojem sekundi mirovanja:


Spavaj(10);

Pratite Krstaricu na www.krstarica.com