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

Flex Discussion :

Bug sur un appel de fonction [FB4]


Sujet :

Flex

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Bug sur un appel de fonction
    Bonsoir à vous,
    je développe une application web avec l'API ArcGIS for flex (1.3).
    Cependant je rencontre un problème assez inédit :

    Mon code bloque sur l'appel d'une fonction avec pour unique paramètre une variable String.

    Je précise que cette variable String a été testée :
    - pas de caractère invisible.
    - type correct
    surtout le contenu de cette String est celui attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    private function getServices():Array{ 
    	    	var array:Array = new Array();
    	    	var layer:Layer;
    	    	var hasGraphicsLayer:Boolean = false;
     
    	    	for(var i:Number = 0; i<this.configData.configMap.length ;i++){
    	    		try{
    	    			layer = getMainServiceLayer(this.configData.configMap[i].label);
    	    		}catch (e:Error){
    	    			Alert.show(e.message);
    	    		}
    	    		if(layer.visible) {
    	    			if(layer is GraphicsLayer) {
    	    				hasGraphicsLayer = true;
    	    			} else {
    	    				array.push(this.configData.configMap[i]);
    	    			}
    	    		}
    	    	}
     
    	    	if(hasGraphicsLayer) array.push({label:dynamicLayerGroupName}) ;
     
    	    	return array;
    	    }
    Cette fonction fait appel à la fonction qui plante : getMainServiceLayer(st:String) qui a pour code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private function getMainServiceLayer(st:String):Layer{
    	var layer:Layer = null;
    	  for (var i:Number =0;i<theMap.layerIds.length;i++)
    	   {
    	   	if (theMap.layerIds[i].toString() == st)
    	   	{
    	   		layer = theMap.getLayer(theMap.layerIds[i]);
    	   		break;
    	   	}
    	     }
    	  return layer;
    }
    J'ai bien sûr essayé des Alert à chaque étape, rien ni fait le code s'arrête mystérieusement lors du dernier tour de l'appel de la fonction getMainServiceLayer(st:String). Après avoir essayé toutes sortes d'Alert, j'ai décidé de placer un try / catch sur l'appel de la fonction pour comprendre et récupérer l'erreur.
    Résultat, le try est exécuté en buggant mais ne lève pas d'erreur dans le catch.

    Quelqu'un aurait-il une idée de ce que cela pourrait-il être ?
    Quelqu'un a déjà rencontré ce bug ?

    Merci d'avance !

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    dans ta fonction getMainServiceLayer, tu peux ne jamais tomber dans le if (?) et donc retourner null. Dans ce cas là, ton

    échouera (je pense mais à confirmer). Pas de message d'erreur ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    d'abord merci pour la réponse.
    Pour ta remarque, suite aux Alert que j'ai posé, j'ai pu voir que le code accède au if à tous les tours de boucles, sauf le dernier.
    Du coup, ne sortant jamais de la boucle for, la fonction ne retourne rien.
    Et la difficulté du bug est justement l'absence totale d'erreur.
    Pas d'erreur de compilation (hors sujet ici), pas d'erreur de type "pointe sur un objet nul", pas d'overflow, rien. Et ce même avec le try / catch ce qui est encore plus étonnant

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    question naive mais es tu sur d'utiliser la version debug du player Flash et si oui de tester un .swf possédant des informations de debug (ie: compilée avec l'option debug à true) ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Alors j'ai oublié de préciser, l'utilisation du debug n'est pas possible (selon moi) puisqu'en fait l'application qui est victime de ce problème est lancée par une autre application flex, donc le lien est difficilement faisable.
    Mais je ne pense que cela ne change pas grand chose, car je me trompe peut-être mais, ce qui se retrouve normalement dans le catch d'une structure try / catch, n' est pas censé être ce qui se retrouve dans les lignes du mode debug ?

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par jsenac Voir le message
    Alors j'ai oublié de préciser, l'utilisation du debug n'est pas possible (selon moi) puisqu'en fait l'application qui est victime de ce problème est lancée par une autre application flex, donc le lien est difficilement faisable.
    pourquoi dans ce cas ne pas lancer l'autre application en mode debug ?

    Citation Envoyé par jsenac Voir le message
    ce qui se retrouve normalement dans le catch d'une structure try / catch, n' est pas censé être ce qui se retrouve dans les lignes du mode debug ?
    je te conseille de remplacer les Alert.show (rébarbatifs à écrire et nécessitant l'import de la classe Alert) et s’affichant "à l'envers" puisque tu verras le dernier Alert lancé avant le premier, par des trace qui eux ne nécessitent pas d'import et surtout apparaissent dans les infos de debug. Concernant, le try/catch, certes tu peux faire un trace(e) par exemple mais dans ton cas de figure il est fort à parier que tu as une erreur ne se lançant pas dans ce bloc selon tes explications.

    Si tu ne veux ou ne sais pas configurer le lancement en mode debug sous FB4, tu peux download la version projector du player flash sur le site d'abode. Cette version t'affichera les traces dans un fichier et les runtime errors.

    @+

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    tu peux aussi utiliser le module fireBug et flashFireBug dans firefox pour voir en live (Sans mode débug) les traces de ton application.

    C'est très utile!!

    Good Luck

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci à vous pour ces informations, je vais de ce pas mettre en œuvre vos conseils !

  9. #9
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    j'ai oublié de préciser que si tu configures le mode debugging de FB4, tu verras les traces dans FB4 aussi

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Un grand merci ! grace à vous, j'ai pu récupérer une erreur et changer ce qui n'allait pas. Ca provient d'une chose mal faite dans l'API ArcGis (un attribut name se transforme en id) du coup on finissant par pointer sur une variable nulle.

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur l'appel des fonctions
    Par ouadie99 dans le forum C#
    Réponses: 6
    Dernier message: 29/06/2010, 14h56
  2. aide sur création/appel de fonctions
    Par nanou1983 dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2008, 09h37
  3. Réponses: 1
    Dernier message: 31/07/2008, 10h37
  4. lien sur un appel de fonction en javascript
    Par gloglo dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/11/2007, 09h40
  5. appel de fonction sur validation de formulaire
    Par PAYASS59 dans le forum Langage
    Réponses: 15
    Dernier message: 17/01/2006, 10h09

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