Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Erreur C# inconnue ^^]Socket + if..else

Un soucis de if qui ne prend pas au code..

Sujet résolu
    3 mars 2012 à 12:57:44

    Bonjour tout le monde !

    J'ai un très gros problème avec un if..else quand une fonction à la reception de données par socket.
    Je reçois par exemple le paquet UID005|Connexion|OK
    je Split le string grâce au | donc j'atteris avec
    sData[0] = UID005, sData[1] = CONNEXION, et sData[2] = OK pas compliquer à comprendre hein ;)
    mais quand je veux verif la valeur dans le tableau grâce au if ça veux pas, ça passe au dessus de tout (Ce qui doit se passer si les 2 ID sont différentes !) Mais j'ai fais apparaitre une MessageBox en croyant que j'avais un problème d'id mais dedans il est bien noté que les 2 sont les mêmes (

    Citation

    MessageBox.Show("IDUNIQUE = " + IDUNIQUE + " -- sData[0] = " sData[0]);
    
    )
    et j'obtient le message :
    -> IDUNIQUE = UID005 -- sData[0] = UID005
    Si quelqu'un pourrai m'aider ce serai super !

    Merci d'avance !

    Données suppl. :
    ! tda = sData !
    J'ai essayer en faisant if(IDUNIQUE.Equals(tda[0], StringComparison.Ordinal)) et en faisant if(IDUNIQUE == tda[0])
    ça marche que si je n'empile pas de if. Mais avec ce code ça marche pas :
    if (IDUNIQUE.Equals(tda[0], StringComparison.Ordinal))
                    {
                        if ("Connexion".Equals(tda[1], StringComparison.Ordinal))
                        {
                            if ("OK".Equals(tda[2], StringComparison.Ordinal))
                            {
                                MessageBox.Show("Afficher la boutique :)");
                            }
                            if ("INCORRECT".Equals(tda[2], StringComparison.Ordinal))
                            {
                                MessageBox.Show("Nom de compte ou mot de passe inccorect !");
                            }
                            if ("IMPOSSIBLE".Equals(tda[2], StringComparison.Ordinal))
                            {
                                MessageBox.Show("Veuillez prévenir un admin au plus vite et lui faire parvenir ce code : wp00f");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Un paquet autre que celui de connexion à été reçu");
                        }
    
                    }
                    else
                    {
                        MessageBox.Show("Cette erreur ne dois jamais arriver, avez vous essayer de cheater ?");
                    }
    



    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 mars 2012 à 16:00:37

      Evite les string.Equals, ça ne sert que si tu veux ignorer la casse ; en C#, l'opérateur == compare par valeur sur les strings.
      Je te conseille aussi d'utiliser un switch sur tda[2], et de nommer "tda" de façon plus claire. Idéalement, tous ces strings devraient être stockés quelque part dans une classe statique ou dans une table de ressources (pour ne pas avoir à modifier le code si une réponse change de nom).

      T'es sûr qu'il n'y a pas d'espaces qui se sont glissés dans la réponse, ou pire, de caractères invisibles dans certaines polices ? (je pense par exemple à \x02 - essaie de coller ce caractère dans Visual Studio, il compte comme un caractère mais ne prend pas de place >< )
      • Partager sur Facebook
      • Partager sur Twitter
        3 mars 2012 à 17:03:18

        Merci je vais essayer ça. Mais je dois le mettre où ce fameux caractère ?

        Et aussi je sais pas si tu as lu tout en entier mais j'ai dis que si j'empilais pas les if ça fonctionne :S

        Merci d'avance !

        ps : pour l'espace je suis sur puisque j'ai afficher le resultat après tout les if dans une messagebox et on ne voit aucun espace en trop.

        Bon ben.. jai résolu tout seul. Il suffit que j'envoi mon paquet UID005|Connexion|IMPOSSIBLE en rajoutant une | à la fin et ça fonctionne.

        Merci quand même pour vos réponses !
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 mars 2012 à 17:52:24

          Montre la différence entre le code qui marche et celui qui ne marche pas...
          • Partager sur Facebook
          • Partager sur Twitter

          [Erreur C# inconnue ^^]Socket + if..else

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown