|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| AutomationEvénement déclenche une "Erreur systeme : Access violation (GPF)" |
| Débuté par David BRETANT, 22 jan. 2026 12:16 - Aucune réponse |
| |
| | | |
|
| |
Membre enregistré 3 messages |
|
| Posté le 22 janvier 2026 - 12:16 |
Bonjour,
Dans une application connectée à une commande numérique, un opérateur clic sur un bouton pour effectué différentes tâches.
L'application récupère et affiche la position des axes numériques dans des champs de la fenêtre principale.
La communication avec la commande numérique est réalisée via un objet automation qui déclenche un évènement à chaque changement de position d'axe.
Le clic sur le bouton démarre un cycle de fonctionnement:
BOUCLE SI bArret ALORS SORTIR .... ..... Multitâche(-10) FIN
J'intercepte l'évènement en utilisation la fonction AutomationEvénement avec la syntaxe:
AutomationEvénement(<Procédure ou méthode> , <Objet automation> , <Interface> , <Événement>)
Maprocedure, déclenchée par AutomationEvénement, mémorise les positions et les affiche dans dans des champs de la fenêtre principale.
Procedure MaProcedure(vtArrayIndex, vtArrayValue)
iIndice est un entier =0 iIndiceMax est un entier = TableauInfo(vtArrayIndex,tiDimension)
iIndex est un entier = 0 iValeur est un entier = 0 sNomAxe est une chaîne = "" iLigneTable est un entier = 0
POUR iIndice=1 _À_ iIndiceMax iIndex = vtArrayIndex[iIndice] iValeur = vtArrayValue[iIndice] tAllValuesAxes[iIndex+1] = iValeur FIN
POUR iAxe=1 _À_ tAllValuesAxes..Occurrence sPosAxe[iAxe] = tAllValuesAxes[iAxe] FIN
Mais, 1 à 2 fois par semaine, l'erreur suivante est générée bloquant l'application:
Module : wd230vm.dll Version du module : 23.0.370.1 VI : 01F230053k Adresse de base : 6A7D0000 Erreur systeme : Access violation (GPF) EIP = 6A9E782C OS : Windows 10.0 (10.0.14393)
Le Dump d'erreur récupéré pointe systématiquement à la fin de Maprocedure sans indiquer de ligne en particulier. La pile des appels montre l'appel à Multitache(-10) juste avant
EIT_PILEWL : Procédure locale Maprocedure (FenPrincipale.PROCEDURE.Maprocedure) Procédure locale DepartCycle (FenPrincipale.PROCEDURE.DepartCycle), ligne 161 ( correspond au Multitache(-10) )
Pensant que le problème venait de l'affichage, je l'ai supprimé mais ça n'a rien changé.
Procedure MaProcedure(vtArrayIndex, vtArrayValue)
iIndice est un entier =0 iIndiceMax est un entier = TableauInfo(vtArrayIndex,tiDimension)
iIndex est un entier = 0 iValeur est un entier = 0 sNomAxe est une chaîne = "" iLigneTable est un entier = 0
POUR iIndice=1 _À_ iIndiceMax iIndex = vtArrayIndex[iIndice] iValeur = vtArrayValue[iIndice] tAllValuesAxes[iIndex+1] = iValeur FIN
La procédure déclenchée par AutomationEvénement est elle exécutée dans le Thread principale ou dans un secondaire ?
Est ce que quelqu'un aurait une idée pour solutionner le problème ? Je suis preneur de toutes remarques et solutions.
Merci pour vos réponses
David |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|