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