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