IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Script qui provoque l'erreur "R6025 – pure virtual function call"


Sujet :

VBScript

  1. #21
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Re !

    J'ai pu faire tourner mon script une bonne 60aine de fois, et du coup je confirme que l'erreur se passe bien à la ligne que je citais plus haut (il n'y a que là qu'elle apparaît) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    application.activeWindow.simulateIBWKey "FR" [validation]
    
    '/************** Partie permettant de copier l'EPN de l'exemplaire *********/
    [SURVENUE DE L'ERREUR]
    application.activeWindow.command "mod", false
    Dans le log, la dernière ligne écrite dans le fichier est celle juste après le "FR", donc l'erreur survient bien au moment où je renvoie le "application.activewindow.command "mod", false".

    Il s'agit d'un truc destiné à écrire dans l'entrée du commande du logiciel afin de passer ce qu'on vient de valider en mode "écriture". Je dirais bien que c'est un problème de timing mais a-priori ce n'est pas ça puisqu'on a fait une temporisation... Donc je sais pas (je vais essayer de changer cette ligne de code par une autre destinée à faire la même chose et voir si ça fonctionne).

  2. #22
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    je vais essayer de changer cette ligne de code par une autre destinée à faire la même chose et voir si ça fonctionne).
    excellente démarche
    tu peux commencer par un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.activeWindow.command "mod"
    (le param False est actif par défaut)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #23
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 102
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 102
    Points : 1 603
    Points
    1 603
    Par défaut
    Citation Envoyé par Bidulbuk Voir le message
    [...] Je dirais bien que c'est un problème de timing mais a-priori ce n'est pas ça puisqu'on a fait une temporisation... Donc je sais pas (je vais essayer de changer cette ligne de code par une autre destinée à faire la même chose et voir si ça fonctionne).
    Dans le code que tu viens de poster, on ne voit pas la tempo.. c'est normal ?

  4. #24
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Oui, j'avais testé puis enlevé ce bout de code proposé par Omen puisque ça ne réglait pas le problème

    Je vais tester avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.activeWindow.simulateIBWKey "F7"
    Ca fait la même chose que le "command" (ce qui est assez bizarre d'ailleurs, parce que si je tape F7 au clavier ça me fait autre chose que de passer en mode écriture alors qu'avec l'objet, ça passe en mode écriture - mais bref). Si ça ne marche pas, je testerai avec le "command" sans le false. Et si ça ne fonctionne toujours pas, il me restera encore une autre manière de faire. Mais après j'aurai plus d'idée.


  5. #25
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Donc j'ai testé avec le "F7", mais j'ai eu de nouveau l'erreur. Du coup, comme j'effectue deux fois cette manoeuvre dans le script, j'ai mis la première avec le "F7" et la seconde avec le "Command" et pour le moment je n'ai pas eu l'erreur... J'attends un peu avant de savoir si c'est une coïncidence ou si ça a marché

  6. #26
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Bon, c'était une coïncidence, j'ai toujours le message d'erreur

    Donc à moins que quelqu'un.e ait une nouvelle idée, j'abandonne, mais merci beaucoup de vos retours !

  7. #27
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 102
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 102
    Points : 1 603
    Points
    1 603
    Par défaut
    Je pensais à un truc un peu tordu pour essayer de contourner ça
    on essai de faire la commande, si erreur on retente, sinon on poursuit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ca_passe=false
    Do while not ca_passe
        Err.clear
        on error resume next
        application.activeWindow.command "mod"
        if Err.number = 0 then 
             ca_passe=true 
        else 
            temporisation
        end if
        Err.Clear
        on error goto 0
    Loop

  8. #28
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Hello,

    Merci pour cette dernière proposition ! Je vais tester ça dès que je suis de retour de congés

  9. #29
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Re !

    [EDIT : le bug décrit ci-dessous semble avoir été ponctuel... Je laisse le message au cas où, mais le code est maintenant bien interprété... ]

    Alors je n'ai pas testé encore ce bout de code (je n'en ai pas l'occasion) mais j'essaye de faire autrement pour ne pas avoir à repasser la fenêtre en mode "édition" deux fois de suite (vu que c'est ça qui bloque).

    Donc j'essaye de passer par une expression régulière pour récupérer la donnée qui m'intéresse. Sauf que.

    En fait ma recherche d'expression régulière se situe juste après la ligne de validation (j'y suis obligé parce que sinon la donnée qui m'intéresse n'est pas créé et je n'ai pas de moyen de la récupérer à la volée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.activeWindow.simulateIBWKey "FR"
    Et du coup le bout de code que j'ai ajouté après cette ligne n'est tout simplement pas interprété par le logiciel (je n'ai aucune erreur ni rien, c'est juste que le bout de code n'est pas exécuté). J'ai essayé en ajoutant juste un msgbox et même résultat : ce qui se situe, dans le code, juste après cette ligne n'est pas interprété...

    J'ai ajouté 10 msgbox à la suite, au cas où il y aurait un message qui s'afficherait, mais aucune n'a fonctionnée.

    Autre info : dans ce bout de code que j'ai rajouté, qui ne provoque aucune erreur, il n'y a pas d'appel aux objets internes de l'application (comme le application.activewindows... "mod")

    Est-ce que ça vous aide à trouver une piste de réponse ?

  10. #30
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Hello, c'est encore moi !

    Je reviens avec quelques infos nouvelles.

    Comme j'ai dit ci-dessus, j'essaye de contourner l'erreur avec une recherche d'expression régulière et je me suis aperçu que l'erreur que j'ai dépend du poste sur lequel je me trouve (j'utilise majoritairement un PC portable, mais ça m'arrive de devoir travailler sur un fixe) : sur le PC portable, j'ai systématiquement l'erreur (même en rajoutant ton dernier bout de code Umfred) tandis qu'elle n'apparaît pas (je ne sais pas s'il faut dire jamais) sur le fixe... J'y ai pourtant les mêmes versions du logiciel et de Windows...

    Ainsi la ligne suivante provoque systématiquement l'erreur sur le portable, tandis que ça n'est pas le cas sur le fixe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    application.activeWindow.simulateIBWKey "FR" 'valide le tout depuis une fenêtre en mode écriture
    
    'SURVENUE DE L'ERREUR
    
    set modele = new regexp 'on créé l'objet regexp
    modele.pattern="A99 [0-9]{8}" 'modele recherché
    modele.global = true 'on recherche plusieurs fois la chaîne
    L'erreur survient alors que je ne fais pas appel aux objets internes de l'application.

    Je suis toujours à votre disposition si vous avez besoin de plus d'informations...

  11. #31
    Nouveau membre du Club Avatar de Bidulbuk
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Comme ça commence à être dur à suivre et que j'ai de nouveau une info, je fais un petit récap de ce qui a déjà été fait ou dit.

    J'utilise une application qui s'appelle WinIBW et dans laquelle j'utilise des scripts VBS. Cette application communique les données à un serveur. Lorsque j'utilise mes scripts j'ai, de façon aléatoire, une erreur "R6025 - pure virtual function call" (particulièrement lorsque des lignes de codes sont inscrites après la validation des données inscrites dans une fenêtre en mode "écriture"). Le service informatique m'a déjà réinstallé l'application (ce qui est souvent préconisé avec cette erreur) sans que ça ne change rien.

    Grâce aux intervenant.es ici, on a essayé, sans que ça n'arrive à régler le problème, les solutions suivantes :


    Là je viens de m'apercevoir que l'erreur a a-priori un rapport avec la durée d'utilisation du script : plus j'utilise un script sur le même ordinateur, plus l'erreur aura tendance à apparaître. J'ai en effet eu, avec un script, l'apparition systématique de l'erreur sur l'ordinateur que j'utilise le plus tandis qu'en testant ce script sur d'autres ordinateurs avec le même logiciel, l'erreur n'apparaissait pas (mais je n'utilisais pas le logiciel à la même fréquence, je le lançais seulement une ou deux fois).
    Aujourd'hui je viens de refaire un test sur l'ordinateur que j'utilise le plus, après une nuit, et l'erreur n'est pas apparue. J'en déduis que c'est lié à la durée d'utilisation en continu du logiciel.

    Est-ce que ça vous paraît plausible comme "explication" ?

  12. #32
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 102
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 102
    Points : 1 603
    Points
    1 603
    Par défaut
    Il y a peut-être un "canal" de communication (ou de processus ou de requête) mal fermé ou se générant qui fait qu'au bout d'un moment le problème survient. (je sais je suis vague mais si ça te donne des pistes....)

Discussions similaires

  1. [PHP 5.4] DateTime qui provoque une erreur 500 (incompréhensible)
    Par jb_gfx dans le forum Langage
    Réponses: 5
    Dernier message: 02/06/2013, 00h34
  2. Un script qui renvoie des erreurs lorsqu'en tâche planifiée
    Par annedeblois dans le forum Sécurité
    Réponses: 0
    Dernier message: 07/10/2009, 14h31
  3. "Pure virtual function called" et destructeur virtuel
    Par Seb des Monts dans le forum C++
    Réponses: 9
    Dernier message: 10/09/2009, 16h54
  4. script qui génère une Erreur 400
    Par faluorn dans le forum Web
    Réponses: 2
    Dernier message: 18/04/2008, 09h04
  5. Réponses: 2
    Dernier message: 18/03/2008, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo