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

JavaScript Discussion :

If qui renvoie toujours false


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut If qui renvoie toujours false
    Bonjour,
    Voila mon probleme. Je fais un simple test dans un IF sur 2 chaines de caractères et ce test me renvoie systèmatiquement FALSE alors que les 2 chaines sont identiques!!!
    Quelqu'un voit-il d'ou peut venir ce problème?
    Merci d'avance... je cherche depuis une heure je ne trouve aucune solution!!!!

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    heu oui attends j'ouvre un maquereau pour voire si j'arrive à visualiser ton code avec la syntaxe du if ...

    tu ne crois pas que si tu nous montrais un bout de code ça irait mieux ...

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Desolé... c'est un code assez special, puisque utilisé par un logiciel de modelisation qui possede des fonctions supplementaires.

    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
    25
    26
    27
    28
    29
    30
    31
    for(i=0; i<oObjList.length; i++)
    {
        oCnxList = null;
    	oCnxList = oObjList[i].InEdges(Constants.EDGES_ALL);
        //si l'evenement n'a aucune connexion entrante, alors il s'agit d'un evenement déclencheur
        if(oCnxList.length==0)
        {
    	    tabEvenement.push(oObjList[i].ObjDef().Name(g_nloc));
            
        }
        //sinon, on regarde dans le tableau on l'on a stocké les procedures d'ou l'on vient (qui sont des procedures déclencheuses)
        //on parcourt toutes les connexions
        //on parcourt ce tableau de procedure
        //on test si pour cette connexion, l'objet source a laquelle elle est reliée correspond a une procedure déclencheuse
        //si tel est le cas, cela signifie que l'evenement est déclencheur
    	else
        {
            for(i1=0; i1<oCnxList.length; i1++)
            {
               
                for(i2=0; i2<tableauProc.length; i2++)
                {               
                    if(oCnxList[i1].CxnDef().SourceObjDef()==tableauProc[i2])                {
                        Dialogs.MsgBox("CA MARCHE PAS");
                        tabEvenement.push(oObjList[i].ObjDef().Name(g_nloc));
                     }
                }
            }
        }
    }
    Le test qui me pose problème est celui en rouge et gras. J'ai mis une variable de controle sur les 2 variables que je teste, et elles sont bien identiques.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    heu oui attends j'ouvre un maquereau pour voire si j'arrive à visualiser ton code avec la syntaxe du if ...

    tu ne crois pas que si tu nous montrais un bout de code ça irait mieux ...
    Avec les tripes d'une pure et innocente jeune fille tu arriveras à mieux voir les lignes de codes

    PS : avec toute supposition :
    tu as vérifié si tes 2 chaines étaient bien en minuscule avant de les tester. S'il n'y a pas des caractères superflus comme des espaces en fin de chaine. ?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Teste les length, fais des alert ...
    bref les trucs classiques de debugage

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    J'ai testé avec les alert, avec la longueur des chaines, avec la mise en minisucule.... le test me renvoie toujours faux alors que les 2 chaines sont identiques¨!

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par einsteineuzzz Voir le message
    le test me renvoie toujours faux alors que les 2 chaines sont identiques¨!
    Ben non, si ton test renvoie faux, c'est que les deux chaînes ne sont pas identiques.
    La question étant de savoir pourquoi, mais ça, on peut pas te le dire avec les infos que tu donnes...

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Bonjour,

    Que donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    alert("debut");
    for(i2=0; i2<tableauProc.length; i2++)
    {               
           alert(i2);
           prompt("","*"+oCnxList[i1].CxnDef().SourceObjDef()+"*"+tableauProc[i2]+"*");
           ...

  9. #9
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Que veux tu comme info supplementaires?
    les valeurs des 2 chaines que je teste sont:
    chaine1 = 6beef7e7-0cd0-41e5-9a31-9b65fca8534c
    chaine2 = 6beef7e7-0cd0-41e5-9a31-9b65fca8534c

    Leur longueur est de 21.

    Je ne vois vraiment pas ce que je peux dire de plus... Une idée?

  10. #10
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    L'alert "début" s'affiche bien a chaque entrée dans la boucle.
    La valeur de i2 est toujours de 0 (je n'ai qu'un élement dans mon tabProc).
    Et je retrouve bien les 2 chaines identiques concatenées et séparées par *...
    Le test d'egalité renvoie toujours faux.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par einsteineuzzz Voir le message
    Que veux tu comme info supplementaires?
    les valeurs des 2 chaines que je teste sont:
    chaine1 = 6beef7e7-0cd0-41e5-9a31-9b65fca8534c
    chaine2 = 6beef7e7-0cd0-41e5-9a31-9b65fca8534c

    Leur longueur est de 21.

    Je ne vois vraiment pas ce que je peux dire de plus... Une idée?
    Oui, mais justement, en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var chaine1 = '6beef7e7-0cd0-41e5-9a31-9b65fca8534c';
    var chaine2 = '6beef7e7-0cd0-41e5-9a31-9b65fca8534c';
    if(chaine1 == chaine2){alert('OK')}
    ça marche
    Donc le problème vient d'ailleurs, par exemple des méthodes CxnDef() ou SourceObjDef()

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par einsteineuzzz Voir le message
    Que veux tu comme info supplementaires?
    les valeurs des 2 chaines que je teste sont:
    chaine1 = 6beef7e7-0cd0-41e5-9a31-9b65fca8534c
    chaine2 = 6beef7e7-0cd0-41e5-9a31-9b65fca8534c

    Leur longueur est de 21.

    Je ne vois vraiment pas ce que je peux dire de plus... Une idée?
    inutile de t'énerver, ça ne fera pas mieux fonctionner ton test

    Il est indéniable que
    Citation Envoyé par Bovino Voir le message
    Ben non, si ton test renvoie faux, c'est que les deux chaînes ne sont pas identiques.
    Tu dis que tout est identique. Pourquoi le penses-tu (alors que ce n'est pas le cas) ?
    Les valeurs que tu nous montres ci-dessus sont-elles un copié/collé des 2 valeurs testées (confirmé par un alert() ), ou les as-tu "recopié" ?

    Tu dis que ça renvoie faux parce que tu as afficher le test pour toutes les valeurs possible et qu'il affiche toujours "false" ?
    Ou seulement parce que l'alert("CA MARCHE PAS") ne s'affiche jamais ?

    Bref, donne-nous plus d'élément, mais a priori on ne peut pas faire de meilleurs tests que toi

    A+

  13. #13
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Non non je ne m'enerve pas...
    Jai mis des variables de controles avec un point d'arret sur mon test, a chaque test, mon programme s'arrete et je vois les nouvelles valeurs de mes 2 chaines.
    je n'ai aps recopié les valeurs, j'ai fait un copier/coller de ces 2 variables de controles au moment ou elles etaient identiques (affichée dans ma fenetre de deboggage).
    J'ai egalement mis uen variable de controle qui m'affiche les resultat du test, et donc qui affiche false, mem au moment ou les 2 chaines me "semblent" identiques.
    L'alert ("CA MARCHE PAS") ne s'affiche pas non plus.

    Je ne demanderai pas de l'aide ici si je supposais que l'on ne pourrait pas faire de meilleurs tests que moi....

  14. #14
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Vous êtes dans une JSP ? Vous êtes dans du Java ou bien du Javascript ?

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    OK

    Même si ça alourdi un peu, pour reprendre le test de Bovino, as-tu essayé de passer par des variables intermédiaires déclarées explicitement dans la fonction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var ch1 = "";
    var ch2 = "";
                for(i2=0; i2<tableauProc.length; i2++)
                {     
    ch1 = oCnxList[i1].CxnDef().SourceObjDef();
    ch2 = tableauProc[i2];
                    if(ch1==ch2)                {
                        Dialogs.MsgBox("CA MARCHE PAS");
                        tabEvenement.push(oObjList[i].ObjDef().Name(g_nloc));
                     }
                }
    Sinon, tu peux toujours zoomer sur le cas où "ça devrait marcher mais ça marche pas" : une fois sur ces 2 termes : parcours caractère/caractère pour les comparer : tu verras si le nav en isole un (ou bloque sur le 1° caractère ou le dernier).
    Ça me fait penser : tu n'aurais pas une des valeurs en provenance du monde windows et une autre du monde Unix/Linux, des fois ?

    A+

  16. #16
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Non je bosse uniquement sous Windows et en javascript...
    Ok je vais tester tout ca.
    Merci a tous pour votre aide.

  17. #17
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Points : 81
    Points
    81
    Par défaut
    tu pourrais installer firefox et firebug, cela te permettrait peut-être de voir si tu as une erreur JS à cet endroit.

    tu pourrais me dire ce que t'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alert(typeof oCnxList[i1].CxnDef().SourceObjDef());
    alert(typeof tableauProc[i2]);

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    vérifie aussi la provenance des données ...
    peut être un souci de charset

  19. #19
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Finalement, j'ai utilisé la fonction appartenant a la classe String en Java, "compareTo" qui compare 2 chaines de caractères... et la ca a enfin marché!
    (le logiciel sur lequel je bosse reconnait les fonctions Java pour les objets comme string ou int).
    Merci a vous!!!

  20. #20
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut :-/
    Je maintiens mon doute quant on fait qu'on soit bien en Javascript.

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

Discussions similaires

  1. Regex qui renvoie toujours false
    Par renaud26 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/09/2011, 11h19
  2. Code qui renvoi toujours 0
    Par popy67 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 05/11/2010, 21h00
  3. FileExists renvoie toujours False
    Par aldapal dans le forum VBScript
    Réponses: 3
    Dernier message: 28/03/2008, 21h50
  4. COUNT avec LEFT JOIN qui renvoie toujours 1
    Par Christophe_ dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/06/2007, 14h20
  5. qui renvoi toujours la valeur positive d'un nombre
    Par juJuv51 dans le forum Langage
    Réponses: 4
    Dernier message: 06/03/2007, 04h17

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