Composants timer efficace

Soyez le premier à donner votre avis sur cette source.

Vue 9 687 fois - Téléchargée 11 888 fois

Description

Vous connaissez surement le principe, le système de timer de windows
n'est pas efficace. Voici un timer qui utilise les évènements onIdle
de l'application.

Fonctionnalitées:
- les mèmes que Timer : Permet d'appeler une procédure avec un certain interval
- ne surchargera pas la pile avec plusieurs appels si la procédure est longue (ce qui peut arriver avec le composants TTimer [sic] )
- donne le délai écoulé entre le dernier appel de l'évènement onTimer
- donne un FPS mis a jour toutes les 2 secondes pour les jeux

Sinon, l'explic. des quelques propriétées est dans le zip, ainsi que tout ce qui va avec(j'ai pas oublié le source cette fois :p )

Conclusion :


Attention, remarque de dernière minutes que j'y pense que maintenant:
Ne JAMAIS mettre un Delay de 0 dans ce timer. Je n'ai pas essayé, mais ça a planté chez un pote...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
19 avril 2010

J'ai trouvé :

"OnIdle is called only once, as the application transitions into an idle state. It is not called continuously unless Done is set to false. Applications that set Done to false consume an inordinate amount of CPU time, which affects overall system performance."

Dans ta procedure PROCEDURE TIdleTimer.DoIdle(Sender : TObject; VAR Done : Boolean);

tu met -> " IF Factive THEN BEGIN
Done := False;"
Pourquoi toujour revérifier en continue ? Pour réglé le problème, j'ai mis "Done := False;" en commentaire... et ca semble fonctionner bien quand même... Qu'est-ce que tu en pense ? J'aimerais savoir pourquoi tu as voulu mettre Done à False !

Merci
Messages postés
9
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
19 avril 2010

Avec ton timer, si je met Active = true, l'utilisation du processeur augmente de beaucoup... que ce soit en runtime ou en designtime... mon intel Q6600 est capable d'en prendre, mais mon celeron affiche une utilisation du processeur de 100%... (même s'il n'y a pas d'événement dans le onTimer...

Est-ce que tu sais c'est du à quoi et comment arranger ca ? car sinon, ton timer c'est une très bonne idée !
Messages postés
14
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
3 juin 2008

Salut CleyFaye,

Je voudrais savoir si avec ton timer j arrive a avoir l évenement OnTimer ou un evenement semblable, de 20 en 20ms précisément? Bien entendu le Timer par défaut ne me le garanti pas, j ai déjà essayé!

Merci pout ta réponse!
Messages postés
20
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
8 mai 2010

LUT MES AMIS: j'ai un probleme avec le timer de Delphi je voudrer ajouter une parametre dans timer et j'arrive pas a ajouter alors aider moi svp, mon problem c'est a chaque fois on clic sur la form un nouveau boutton doit etre creer et la valaur 100 est affecter au caption de ce button j'usqua se mement c'est simple mais le probleme qui se pose: j'ai associe a chaque button une timer qui creer de meme principe de button maintenat je voudrer décrementer la valeur de chaque button indepondament au autres button jusqu'a arrivé a 0. merci d'avance et j'attend votre reponse.
Messages postés
10
Date d'inscription
lundi 1 mai 2006
Statut
Membre
Dernière intervention
7 septembre 2006

Je suis déslolé, ton timer me serait très utile, mais je ne comprend pas du tout son utilisation...

Je suis trop débutant a mon avis.

Merci de m'éclairer ;)
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.