Rekurencja?! Chyba nie wiesz o czym piszesz! Rekurencja to odwoływanie się funkcji samej do siebie i służy do coraz głębszego zagłębiania się w coś. Przykład rekurencji masz
w sewisie Cyfrowy
Baron w poradzie:
wyszukiwanie folderów, podfolderów i plików, gdzie rekurencja pozwala zagłębiać się w podkatalogi przeszukiwanego katalogu, aż do czasu, gdy nie ma już niżej żadnego katalogu. Rekurencja kiedyś musi się skończyć, gdyż takie zagłębianie się w nieskończoność musi w końcu spowodować zawieszenie programu.
Uważasz, że rekurencja pozwala wykonywać zadanie w określonych odstępach czasu? A niby jak? To jeszcze gorzej niż wywoływanie funkcji w pętli
GoldWolf napisał(a):czy jest jakiś sposób, by coś wykonywało się w koło o ten sam odstęp czasu?
No jest to właśnie TTimer.
Możesz wyjaśnić jaki masz problem z tym Timer-em?! Czy może chodzi o to, że nie wiesz jak użyć Timera w aplikacji konsolowej?!
Prosty przykład dla Embarcadero RAD Studio C++Builder 2010. Mapowanie ustawione na wchar_t z obsługą Unicode, czyli z polskimi znakami diakrytycznymi.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
#include <iostream>
#include <windows.h>
#include <ctime>
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
bool Timer(int interval)
{
double sec1 = time(0);
while(1)
{
double sec2 = time(0);
if(sec2 >= sec1 + interval) return true;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE, ""); /* by obsługiwać Unicode - Polskie znaki diakrytyczne */
int tick = 5;
while(1)
{
if( Timer(tick) )
{
/* tutaj zegar tyka z określoną częstotliwością */
wprintf(L"Upłnęło %d sekund.\n\n", tick); /*wprintf zamiast printf dla Unicode */
}
}
cin.get();
return 0;
}
//---------------------------------------------------------------------------
Funkcja, którą wykorzystujesz do sprawdzania temperatury oparta jest na WMI i niestety nie będzie działać na każdym sprzęcie, gdyż nie każdy producent sprzętu dostarcza odpowiednie protokoły i rozszerzenia dla swojego sprzętu. U mnie np. ten kod zwraca komunikat o braku sensora, a mam ich cztery.