PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → timersys qui s'empile !
timersys qui s'empile !
Débuté par atrioux, 04 jan. 2005 18:22 - 6 réponses
Posté le 04 janvier 2005 - 18:22
j'utilise dans une toute petite appli un timersys

celui ci s'empile avant meme que la procedure se termine, enfin il me semble
que c'est a cause de ca

ex :
TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur fatale
ensuite car depassement de la pile

si je fait TimerSys("Nomdelaprocedure",600,1), je n'ai plus le probleme

c'est le seul timersys de mon projet et j'ai tenté de le numéroter mais idem
il est integre dans l'initialisation de mon projet
seul remarque que l'on peut faire : c'est que dans la procedure j'utilise le
composant balloontype

ci qq'un peut m'aider
Posté le 04 janvier 2005 - 18:38
Tout dépend de ce que vous faites dans votre procédure.
Il peut aussi être avantageux de ne pas imposer un numéro de timer, mais
d'utiliser à la place une
variable qui sera initialisée de cette façon :
NumTimer est un entier // déclaré en global

NumTimer = TimerSys("Nomdelaprocedure",100)

Ainsi, vous évitez tout risque de remplacer un autre timer.


"Arnaud TRIOUX" <atrioux@horloges-huchez.fr> a écrit dans le message de
news: 41dab9bd$1@news.pcsoft.fr...

j'utilise dans une toute petite appli un timersys

celui ci s'empile avant meme que la procedure se termine, enfin il me
semble
que c'est a cause de ca

ex :
TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur fatale
ensuite car depassement de la pile

si je fait TimerSys("Nomdelaprocedure",600,1), je n'ai plus le probleme

c'est le seul timersys de mon projet et j'ai tenté de le numéroter mais
idem
il est integre dans l'initialisation de mon projet
seul remarque que l'on peut faire : c'est que dans la procedure j'utilise
le
composant balloontype

ci qq'un peut m'aider

Posté le 04 janvier 2005 - 18:38
Personnellement j'utilise une variable globale ProcEnCours

si ProcEnCours alors retour
ProcEnCours = vrai
..... Code ...
ProcEnCours = faux


"Arnaud TRIOUX" <atrioux@horloges-huchez.fr> a écrit dans le message de
news:41dab9bd$1@news.pcsoft.fr...

j'utilise dans une toute petite appli un timersys

celui ci s'empile avant meme que la procedure se termine, enfin il me

semble
que c'est a cause de ca

ex :
TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur fatale
ensuite car depassement de la pile

si je fait TimerSys("Nomdelaprocedure",600,1), je n'ai plus le probleme

c'est le seul timersys de mon projet et j'ai tenté de le numéroter mais

idem
il est integre dans l'initialisation de mon projet
seul remarque que l'on peut faire : c'est que dans la procedure j'utilise

le
composant balloontype

ci qq'un peut m'aider

Posté le 04 janvier 2005 - 18:52
"Arnaud TRIOUX" <atrioux@horloges-huchez.fr> écrivait
news:41dab9bd$1@news.pcsoft.fr:

TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur
fatale ensuite car depassement de la pile


Salut,

Pour éviter d'empiler, arrêtre le timer au début de la procédure, effectue
le traitement, puis relance le Timer à la fin.
De cette façon tu n'es plus tributaire du delai d'exécution de la
procédure.

--
En esperant t'avoir aidé.
Posté le 04 janvier 2005 - 18:55
en général pour etre tranquille, a l'entree de votre fonction appelée
par le timer, vous tuez le timer et le relancez a la fin de la
procédure. Comme ca vous n'aurez jamais d'erreur

Arnaud TRIOUX wrote:
j'utilise dans une toute petite appli un timersys

celui ci s'empile avant meme que la procedure se termine, enfin il me semble
que c'est a cause de ca

ex :
TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur fatale
ensuite car depassement de la pile

si je fait TimerSys("Nomdelaprocedure",600,1), je n'ai plus le probleme

c'est le seul timersys de mon projet et j'ai tenté de le numéroter mais idem
il est integre dans l'initialisation de mon projet
seul remarque que l'on peut faire : c'est que dans la procedure j'utilise le
composant balloontype

ci qq'un peut m'aider

Posté le 05 janvier 2005 - 11:45
Bonjours
Sauf pour WD9 je confirme qu'un timer n'est pas relancé quant la procédure
appelée est en cours Il n'y a pas d'empilement
et c'est tant mieux pour moi car j'utilise ca un maximum (certain timer avec
1 ms)

"Arnaud TRIOUX" <atrioux@horloges-huchez.fr> a écrit dans le message de
news:41dab9bd$1@news.pcsoft.fr...

j'utilise dans une toute petite appli un timersys

celui ci s'empile avant meme que la procedure se termine, enfin il me

semble
que c'est a cause de ca

ex :
TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur fatale
ensuite car depassement de la pile

si je fait TimerSys("Nomdelaprocedure",600,1), je n'ai plus le probleme

c'est le seul timersys de mon projet et j'ai tenté de le numéroter mais

idem
il est integre dans l'initialisation de mon projet
seul remarque que l'on peut faire : c'est que dans la procedure j'utilise

le
composant balloontype

ci qq'un peut m'aider

Posté le 05 janvier 2005 - 12:05
CODE DU PROJET
---------------------
CPT est un monétaire = 0
NumTimer est un entier = 0

INITIALISATION DE LA FENETRE
----------------------------------------
NumTimer = TimerSys("TEST1",1) //toutes les centième de
seconde

FERMETURE DE LA FENETRE
-----------------------------------
IF NumTimer>0 THEN FinTimerSys(NumTimer)


PROCEDURE TEST1()
-------------------------
i est un entier
j est un entier
DateHeure est une chaîne = DateSys()+HeureSys()
CPT++
Trace(CPT)
FOR i=0 TO 250000
FOR j=0 TO 115
END
END
Trace(DateHeureDifférence(DateHeure,DateSys()+HeureSys()))

RESULTAT
-------------
1
+000000000000102 // la boucle fait ~1 seconde sur mon PC
2
+000000000000100
3
+000000000000102
4
+000000000000103
5
+000000000000102
6
+000000000000100
7
+000000000000102
8
+000000000000101
9
+000000000000102
10
+000000000000102
11
+000000000000102
12
+000000000000101

PAR CONTRE si à la place de mes deux boucles, je met un Multitache(100)
alors la j'ai un stack overflow car dans ce cas je rend la main au autres
process donc je redeclenche
le timer...

"Arnaud TRIOUX" <atrioux@horloges-huchez.fr> a écrit dans le message de
news:41dab9bd$1@news.pcsoft.fr...

j'utilise dans une toute petite appli un timersys

celui ci s'empile avant meme que la procedure se termine, enfin il me

semble
que c'est a cause de ca

ex :
TimerSys("Nomdelaprocedure",100,1)
la procedure dure 5 secondes et il s'empile et provoque une erreur fatale
ensuite car depassement de la pile

si je fait TimerSys("Nomdelaprocedure",600,1), je n'ai plus le probleme

c'est le seul timersys de mon projet et j'ai tenté de le numéroter mais

idem
il est integre dans l'initialisation de mon projet
seul remarque que l'on peut faire : c'est que dans la procedure j'utilise

le
composant balloontype

ci qq'un peut m'aider