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

WinDev Discussion :

Fonction Compile() et numéro de la ligne de l'erreur


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut Fonction Compile() et numéro de la ligne de l'erreur
    Bonjour,

    Dans le cadre d'un projet je dois compiler du code dynamiquement et pour se faire j'utilise la fonction Compile() de WinDev (18).

    Malheureusement quand j'ai une erreur de syntaxe dans le code à compiler,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Trace("UN")
    Trace("DEUX"// Erreur
    Trace("TROIS")
    La fonction Compile() m'envoie la chaîne "Ligne incomplète" mais je n'arrive pas à récupérer le numéro de la ligne à la quelle se trouve mon erreur. La fonction ErreurInfo() est vide et ErreurInfo(errLigne) me retourne toujours 0.

    Avez vous une idée de comment puis-je récupérer ce numéro de la ligne ?

    D'avance merci.

    Cordialement.

    >Cartmanez

  2. #2
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Citation Envoyé par Cartmanez64 Voir le message
    Dans le cadre d'un projet je dois compiler du code dynamiquement et pour se faire j'utilise la fonction Compile() de WinDev (18).

    Malheureusement quand j'ai une erreur de syntaxe dans le code à compiler,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Trace("UN")
    Trace("DEUX"// Erreur
    Trace("TROIS")
    La fonction Compile() m'envoie la chaîne "Ligne incomplète" mais je n'arrive pas à récupérer le numéro de la ligne à la quelle se trouve mon erreur. La fonction ErreurInfo() est vide et ErreurInfo(errLigne) me retourne toujours 0.

    Avez vous une idée de comment puis-je récupérer ce numéro de la ligne ?
    Si on fait une erreur sur un nom de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Trace("UN")
    Trce("DEUX")// Erreur
    Trace("TROIS")
    si on fait une division par 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Trace("UN")
    Trace("DEUX" + (8/0))// Erreur
    Trace("TROIS")
    le numéro de ligne en erreur est bien indiqué

    Mais pour le cas des lignes incomplètes le numéro de ligne n'est pas indiqué
    c'est le cas pour la ) manquante de ton exemple mais aussi pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Trace("UN")
    Trace("DEUX")// Erreur
    SI
    Trace("TROIS")
    Je ne crois pas qu'on puisse disposer de cette info dans windev pour ce type d'erreur
    Peut-être dans une prochaine version
    Ou alors il faut que tu analyses le code avant compilation et là je te souhaite bien du courage...
    Avant de s'engager dans ce travail la question à ce poser, est-ce bien nécessaire ???

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Merci d'avoir répondu laurent30s.

    1. Si on fait une erreur sur un nom de fonction, une exception est générée lors de l'exécution du code par la fonction ExécuteTraitement() et là on a le numéro de ligne.

    2. Si on fait une division par 0, là c'est bien une erreur de compilation et le résultat de celle si vaut "ERR" et dans ce cas je peux utiliser la fonction ErreurInfo(errLigne) pour le numéro de ligne et sa marche bien.

    3. Oui c'est nécessaire de le faire car c'est dans mon cahier des charges pour mon travail de diplôme.

    Il est claire que d'écrire un "parseur" pour le WLangage n'est pas envisageable (manque de temps, trop compliquer).

    Il faut voir si on peut forcer la fonction Compile() à retourner toujours "ERR" en cas d'erreur (divisions par 0 ou ligne incomplète).

    Toute autre proposition est la bienvenue.

    Cartmanez64

  4. #4
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    Bonjour,

    Je pense que la compilation se fait pour la chaîne sans décomposer les lignes.

    Tu peux essayé de faire un compile() ligne par ligne afin de savoir où le code bloque.
    Ensuite il faudra refaire un compile de tout le code.
    mais c'est une idée!!

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Bonjour,

    J'ai déjà essayé ligne par ligne mais si dans mon code j'ai un bloc

    POUR i = 0 A 5
    //code
    FIN

    la ligne POUR i = 0 A 5 sera fausse car il n'y pas de FIN pour le POUR. En effet la FIN est sur une autre ligne.

    Merci quand même.

  6. #6
    Membre Expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 915
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 915
    Par défaut
    J'avais pas vu ça.
    J'avais dit que ce n'étais qu'une idée.

Discussions similaires

  1. [XL-2010] Renvoi d'un numéro dans plusieurs lignes en fonction de la quantitée à renvoyer
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/04/2015, 15h02
  2. fonction public retourne le numéro de la ligne de la fonction
    Par dadavivid dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2010, 15h58
  3. [Exceptions] Comment afficher le numéro de la ligne ?
    Par hpalpha dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2004, 09h58
  4. [xml] Récupérer le numéro de la ligne d'erreur d'un fichier
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 7
    Dernier message: 20/03/2004, 19h09
  5. ListBox : récupération du numéro de la ligne
    Par Argonz dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/11/2003, 08h17

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