[delphi] Timer - OSZUST!

0

Mam problem ze zwykłym Timerkiem, otóż on oszukuje, tzn. myślę, że jest to spowodowane obciążeniem systemu...niezgadza się wówczas liczenie np. sekund, a gdy np. przytrzymamy pasek (caption) to Timer się wstrzymuje...

Chciałem zapytać czy znacie jakiś komponent typu TIMER, który był by dokładny?

POZDRAWIAM! {hello} --_____________________________________________
To jest właśnie złośliwość rzeczy martwych...

0

Możesz użyć DxTimer. Ma mniejszy interwał, ale to raczej ci nie pomoże w dokładnym odliczaniu).
Możesz sam zrobić Timera wykorzystując WinAPI. Ale jeżeli powodem jest obciążenie komputera to raczej nic to nie da.
Jeżeli chcesz naprawdę dokładnie odczytywać upływający czas to polecam polecenie procesora (wszystkie &gt= Pentium) RDTSC. Ale nie uzyskasz w ten sposób automatycznego wywoływania.

Jedyne, co mogę ci polecić, to umieścić Timera w oddzielnym wątku. Dzięki temu będziesz miał przynajmniej pewność, że będzie działał dobrze niezależnie od obciążenia twojego programu (jeżeli system będzie obciążony to raczej niewiele pomoże).--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

dokładniejszy i lepszy byłby chyba wątek -&gt program robi to co jest w wątku niezalenie od tego co sie dzieje :P

0

A moglibyście jeszcze podać tutaj jakiś kod z wykorzystaniem wątku...(najprostrzy przykład i jakiś wniosek, dlaczego lepszy :) Z góry Dzięki!--_____________________________________________
To jest właśnie złośliwość rzeczy martwych...

0

OnoMaTO napisał:
A moglibyście jeszcze podać tutaj jakiś kod z wykorzystaniem wątku...

{Delphi}\Demos\Threads--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Mu chodzi, że timer się stepuje ;] Użyj DxTimer z interval := 1000; (1 s)
i daj wartość ActiveOnly na false;

0

ZIOMBER napisał:
Mu chodzi, że timer się stepuje ;] Użyj DxTimer z interval := 1000; (1 s)
&gti daj wartość ActiveOnly na false;

I co wtedy nie będzie gubił w ciągu minuty tych (jak obliczyłem) min. 3 sek? Bo co sekunde dodaje tam 1 sek do zegara, ale w stosunku co do zegara zwyklego gubi jak powiedziałem ze 3 sekundy w ciagu minuty...--_____________________________________________
To jest właśnie złośliwość rzeczy martwych...

0

mi działa....

0

ZIOMBER napisał:
mi działa....

tylko co Ci dziala? stary timerek czy ten dxtimer? bo jak wewalisz jeszcze do timerka jeszcze kilka innych procedurek to opoznia(nie ma procedur wstrzymujacych, same na liczenie)...bo ja zapewniam Cie ze mi spoznia..&gt!--_____________________________________________
To jest właśnie złośliwość rzeczy martwych...

0

OnoMaTO napisał:
tylko co Ci dziala? stary timerek czy ten dxtimer? bo jak wewalisz jeszcze do timerka jeszcze kilka innych procedurek to opoznia(nie ma procedur wstrzymujacych, same na liczenie)...bo ja zapewniam Cie ze mi spoznia..&gt!

A brałeś pod uwagę możliwość, że twój zegar czasu rzeczywistego (albo zegarek na ręku) są przetaktowane ;) --Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Dryobates napisał:

&gtA brałeś pod uwagę możliwość, że twój zegar czasu rzeczywistego (albo zegarek na ręku) są przetaktowane ;)

Stary, ale to nie o to chodzi, czyli sądzisz, że np. zegar windows'a oszukuje (to jest możliwe, ale nie 3 sek. na minute :)...nie jest to raczej niemożliwe i brałem wszystko pod uwagę i taka jest prawda, że Timer oszukuje :), ale coś wymyśle...--_____________________________________________
To jest właśnie złośliwość rzeczy martwych...

0

OnoMaTO napisał:
Stary, ale to nie o to chodzi, czyli sądzisz, że np. zegar windows'a oszukuje (to jest możliwe, ale nie 3 sek. na minute :)...nie jest to raczej niemożliwe i brałem wszystko pod uwagę i taka jest prawda, że Timer oszukuje :), ale coś wymyśle...

Porównaj wskazania programu (używając Timer), zegara Windows i własnego zegarka. Jeżeli Timer i Windows będą wskazywać tą samą godzinę to znaczy:
A. Duże obciążenie komputera uniemożliwia poprawne zliczanie czasu i raczej wiele nie poradzisz
B. Twój zegarek źle chodzi (czasem 3 sek/min. to nie tak dużo)

Jeżeli jednak wskazania zegara Windows i twojego zegarka będą takie same, a wybijać będzie się twój Timer to prawdopodobnie da się coś zrobić. Byćmoże Timer dobrze zlicza, ale zanim wyświetli czas mija pewien czas.
Jeżeli nie potrzebujesz automatycznego wywoływania zdarzenia OnTimer to jednak proponuję ci odczyt zegara procesora przez RDTSC.--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

1 użytkowników online, w tym zalogowanych: 0, gości: 1