Knihovna CPPTimer.fll, co umí, jak to dělá a její použití.

Nedávno se na tomto serveru objevila FLL knihovna CPPTimer. K čemu slouží ? Jaká má omezení ? Vyplatí se ji vůbec používat ?

Nebudu zde probírat jak inicializovat timery a jak je nastavovat, toto je popsáno v souboru Readme.txt u fll knihovny.

Co umí:
Tato knihovna umožňuje "vytvořit" až 50 timerů, které nastanou "vždy". To znamená, že knihovna interně registruje Windows-ký timer a zajišťuje , že všechny timery, které si inicilizujeme, spustí námi udané procedury i když VFP dělá něco jiného. Nesmí se to však brát doslovně, neboť VFP je dosti citlivá na vnucování paralelního provádění kódu.

Tyto timery mají i omezení (některá i oprávněně ):

Jak to dělá:
Každý kdo zvládá C a podívá se na zdrojový kód, pronese "Jak jednoduché".
Interně se používají tři matice, každá z nich má 50 buněk.

Při inicializaci se do globální proměnné maxnumberoftimers uloží maximální počet timerů pro použití. Pokud již k inicializaci došlo, veškeré předchozí údaje se "smažou". Ve Windows si knihovna zaregistruje Timer s udaným intervalem. Při vyvolání zpětně-volané procedury TimerFunc() je procházena matice lastevent[] a porovnává se rozdíl mezi posledním uloženým časem s intervalem a novým časem. Pro zjišťování času se používá API funkce timeGetTime().

Pokud dojde ke kýženému rozdílu, spustí se příkaz uložený v matici parancs[].

Její použití:

Je zde značně široké pole působnosti. Od zjišťování různých stavů na pozadí běžící aplikace ( procházení tabulky pomocí SCAN ... ENDSCAN ) až po různé grafické blbinky.

Na konec bych jen dodal, že dodaný zdrojový kód poněkud neodpovídá souboru Readme.txt .

Ve zdrojovém kódu chybí funkce GetFreeTimerIndex() a ve funkcích SetupTimer() a StopTimer() jsou drobné chybičky. Místo TimerID < maxnumberoftimers má být TimerID<=maxnumberoftimers.