FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
Comportement étrange de TimerSys() dans une méthode de classe
Comportement étrange de TimerSys() dans une méthode de classe
Débuté par Julien V, 18 oct. 2020 11:07 - 1 réponse
Connectez-vous…
Julien V
#1
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 18 octobre 2020 - 11:07
Bonjour,
J'essaie d'implémenter un TimerSys() dans une méthode de classe
https://doc.pcsoft.fr/fr-FR/?3015006&3015006
Code d'une méthode d'un objet :
Si la fonction TimerSys est appelée dans une méthode d'un objet, le timer est associé à l'objet. Le timer est interrompu par la fonction FinTimerSys, par la libération de l'objet et par la fermeture de la fenêtre.
Si j'appelle une autre méthode de classe (même vide) dans celle qui est appelée par le TimerSys(), systématiquement j'ai une erreur de dépassement de pile d’exécution :
Que s'est-il passé ?
Votre code a provoqué un dépassement de la pile d'exécution.
Code erreur : 1058
Niveau : erreur fatale
Dump de l'erreur du module 'wd240vm64.dll' (24.0.600.2).
Identifiant des informations détaillées (.err) : 1058
Informations de débogage :
vm.cpp, 1238
WLanguage stack overflow
Informations supplémentaires :
EIT_PILEWL :
Méthode main (CTest.main)
Méthode main (CTest.main), ligne 4
Méthode main (CTest.main), ligne 4
L'erreur est facilement reproductible avec une classe de test n'ayant que ce code suivant :
C
Test
est une
C
lasse
FIN
Procedure
init
(
)
SI
TimerSys
(
":main"
,
1
,
1
) =
0
ALORS
TitreSuivant
(
"Avertissement"
)
Erreur
(
"Création du timer impossible"
)
FIN
// SI Timer( main, 1, 1 ) = 0 ALORS
Procedure
main
(
)
update
(
)
render
(
)
Procedure
update
(
)
// Vide
Procedure
render
(
)
// Vide
test est un CTest // ou test est un objet CTest ou test est un objet dynamique = allouer un CTest
test.init()
Par contre si je n'appelle pas d'autres méthodes de classe dans main() ou si j'utilise des procédures internes, ça passe :
Procedure
main
(
)
i_update
(
)
i_render
(
)
PROCEDURE INTERNE
i_update
(
)
Trace
(
"update OK"
)
FIN
PROCEDURE INTERNE
i_render
(
)
Trace
(
"render OK"
)
FIN
Si quelqu'un sait comment faire, je suis preneur !
Signaler
0
0
Julien V
#2
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 19 octobre 2020 - 08:18
Bon c'est de ma faute, ça fonctionne très bien, je n'avais pas déclaré l'objet test est un CTest en variable globale...
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Hors-sujet
Outils
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte