PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → [WD27] AutomationEvénement déclenche une "Erreur systeme : Access violation (GPF)
[WD27] AutomationEvénement déclenche une "Erreur systeme : Access violation (GPF)
Débuté par David BRETANT, 11 mar. 2026 11:35 - Aucune réponse
Membre enregistré
4 messages
Posté le 11 mars 2026 - 11:35
Bonjour,

Concernant mon message du mois de janvier, l'erreur se produisait dans une application générée en Windev 23.
La même erreur se produit dans une application générée en Windev 27.
Est-ce que quelqu'un aurait une idée sur l'origine du problème ? Qu'est ce que j'écris mal ?

Message d'erreur:

Une erreur interne inattendue est survenue.

Pile des appels :
Procédure locale fxPLCReadVariablesChanged (Menu_Principal.PROCEDURE.fxPLCReadVariablesChanged)
Procédure locale mpDepartCycle (Menu_Principal.PROCEDURE.mpDepartCycle), ligne 152
Clic sur btDepartCycle (Menu_Principal.btDepartCycle), ligne 2

Date : 11/03/2026 10:53:55
Projet : Application_Flexium (5.00C)

Informations supplémentaires :
Code erreur : 1020
Module : wd270vm.dll (01F270104h - 27.0.549.107)

Informations de débogage :
Module : wd270vm.dll(01F270104h - 27.0.549.107)
Adresse de base : 60730000
Erreur systeme : Access violation (GPF)
EIP = 608A1B1F
OS : Windows 8 (6.2.9200)

Registres :
  EIP = 608A1B1F    EBP = 0133C7E0
  EAX = 00000000    EBX = 00000001
  ECX = 00000000    EDX = 01538D94
  ESI = 047DF718    EDI = 047DFA60

Pile des appels :
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60859D60 : EXT_bSetVariableCollection() + 294335 bytes
[???] 0398DDD3
[???] 0133C840
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60A1CAC0 : TermLibrary() + 1019080 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 787760 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60741C20
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 6073DE70
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 6073DE70
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 6073DE70
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 801856 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 795072 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 794944 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 795008 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 795232 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 795968 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 796480 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 796784 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 795920 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 796800 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 952080 bytes
[wd270vm.dll (60730000), 27.0.549.107, 01F270104h] 60902240 : InfoVersionWeb() + 955904 bytes

EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <458752>



Code écrit dans le l'initialisation du projet:
ObjAuto_DPlcVariables est un objet automation dynamique //Déclaration de l'objet pour lire et écrire des variables automate


Code dans une fonction de la fenêtre principale
//Allocation + initialisation
ObjAuto_DPlcVariables = allouer un objet automation "FXServer.DPlcVariables"
ObjAuto_DPlcVariables>>Init(ObjAuto_DGroupManager>>Handle) //L'initialisation se passe correctement


//Abonnement à un évènement automation
AutomationEvénement("fxPLCReadVariablesChanged",ObjAuto_DPlcVariables,"{D7898A32-AEB1-44DD-9CFE-950C7A9DAD6B}",0x00000002)


Déclaration de la procédure locale appelée à chaque réception de l'évènement automation:

Procedure fxPLCReadVariablesChanged(vIndex, vValue)
iIndiceIndex est un entier = 0 //LIGNE OU POINTE LE DUMP DE DEBUGAGE
iIndiceMaxIndex est un entier = 0
iValIndex est un entier = 0

iIndiceMaxIndex = TableauInfo(vIndex,tiDimension)

POUR iIndiceIndex=1 À iIndiceMaxIndex
iValIndex = vIndex[iIndiceIndex]

iValIndex = iValIndex+1

SI iValIndex>0 ALORS
tValVarPLC[iValIndex] = vValue[iIndiceIndex]
FIN
FIN

DemandeMiseAJourIHM(iMajPlc)


Merci d'avance pour vos remarques et idées sur mon problème

David