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

C# Discussion :

bug avec String.IndexOf()


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut bug avec String.IndexOf()
    Bonjour à tous, je débute dans C#, et je rencontre un probleme que je ne comprend vraiment pas.

    mieux qu'un long discourt, une image :


    Alors je ne lance pas de thread, en gros, j'ai une séquence qui parcourt un texte formaté, contenant des questions et des réponses. Lorsque j'arrive à la neuvieme question, IndexOf me trouve bien mon tiret "-" (en position 3), mais la valeur stockée dans index est différente (-1). Et la je n'y comprend rien !

    Pourriez vous m'expliquer pourquoi? les types sont identiques, aucun thead a coté, une sequence toute bete !!! pourquoi ce 3 se transforme en -1?

    Merci milles fois d'avance, car la je bloque vraiment.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Bizzare ton problème.

    Tout ce que je peux te conseiller et de transformer ton sting en chararray (toCharArray) et de le parcourir avec un for classique pour détecter la position de ta première occurence de "-".

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Et si tu places ton breakpoint à la ligne d'en dessous?

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par giova_fr Voir le message

    Alors je ne lance pas de thread, en gros, j'ai une séquence qui parcourt un texte formaté, contenant des questions et des réponses. Lorsque j'arrive à la neuvieme question, IndexOf me trouve bien mon tiret "-" (en position 3), mais la valeur stockée dans index est différente (-1). Et la je n'y comprend rien !
    Si il retourne -1, c'est qu'il ne le trouve pas. Donc pourquoi dis tu qu'il le trouve ? (à part cela, ton image est tellement petite qu'on ne voit rien )

    Poste un morceau de code, ce sera plus simple, je pense.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Bizzare ton problème.

    Tout ce que je peux te conseiller et de transformer ton sting en chararray (toCharArray) et de le parcourir avec un for classique pour détecter la position de ta première occurence de "-".
    Aucune raison de procéder ainsi.

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Si il retourne -1, c'est qu'il ne le trouve pas. Donc pourquoi dis tu qu'il le trouve ? (à part cela, ton image est tellement petite qu'on ne voit rien )

    Poste un morceau de code, ce sera plus simple, je pense.
    Son image est une miniature sur laquelle tu peux cliquer

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bah c'est simple, il y a -1 dans index car la valeur n'a pas encore été settée.
    Ton point d'arret est trop tot, mets le à la ligne suivante et tout ira bien

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Et lorsque tu cliques dessus, tu vois que l'int vaut -1 alors que le retour de la fonction vaut 3 (afficher aussi dans le débuger).

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    dites personne ne voit que la flèche (entouré) est positionné à la ligne en dessous de celle du point d'arrêt ?
    Donc toutes les opérations de la ligne désigné par le point d'arrêt ont été faite.

    Comme quoi une image n'est pas forcement plus simple qu'un texte

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Son image est une miniature sur laquelle tu peux cliquer
    J'ai cliqué si fort que le bouton du mulot a traversé le bureau, l'image n'a pas bougé d'un poil.

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Vu que la flèche est sur la ligne avec le string ... index doit déjà être affecté étant donné que c'est la ligne d'avant.

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    http://img170.imageshack.us/my.php?i...apturersh7.jpg

    Cela t'ouvres une nouvelle fenetre sur le lien suivant normalement

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par ced600 Voir le message
    http://img170.imageshack.us/my.php?i...apturersh7.jpg

    Cela t'ouvres une nouvelle fenetre sur le lien suivant normalement
    Merci !

    Mais je ne sais pas pourquoi cela ne le faisait pas depuis l'image d'origine.

    ImageShack est-il alergique au panda roux ?

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Si vous continuez je vais vous parler de code quantum une série que j'aime bien, mais là on risque de vraiment dérivé du sujet non ?

  15. #15
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Tout d'abord, merci pour votre participation.

    En vrac, je répond :

    de ce que j'ai constaté, voici ce qui se passe sur ma ligne de code :
    int index = m_CurQuestiontxt.IndexOf("-",0);

    1) index est déclaré, puis automatiquement setté à 0 (et pas à -1 comme cela a été écrit dans ce topic)
    2) le CLR évalue l'expression de droite.

    Truc bizare à mort, si vous regardez le screenshot, vous voyez que m_CurQuestiontxt.IndexOf("-",0) retourne bien 3 dans le watcher !
    mais c'est -1 qui est stocké dans index, et c'est là où je m'y perd complétement.

    J'ai réglé le probleme en remplacant m_CurQuestiontxt par un attribut passé à la fonction. mais ca ne m'explique pas le pourquoi....
    Un probleme de référence, du genre m_CurQuestiontxt modifié en parallel ailleur? je ne vois pas pourquoi, je n'ai qu'un seul thread, surtout que la fonction IndexOf retourne bien 3, et le probleme est systematique.

    Non vraiment je m'y perd la...

  16. #16
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Si tu postais la procédure "litigieuse", ce serait sans doute plus simple, non ?

  17. #17
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    C'est peut etre tout simplement un probleme de refresh du watcher non???
    La valeur est fausse en exécution aussi?

  18. #18
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    oui le probleme se produit à l'execution.
    C'est une levée d'exception sur une instruction suivante (due à ce probleme) qui m'a fait mettre le doigt dessus.
    Je vous posterai le code ce soir, je ne l'ai pas sous la main, je suis au boulot.

    Merci encore.

Discussions similaires

  1. Bug avec JSON avec un tableau contenant un index en string
    Par LaurentC33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/06/2014, 14h37
  2. Réponses: 4
    Dernier message: 09/06/2012, 09h08
  3. [AJAX] bug json avec string contenant un &
    Par Pitrivief dans le forum AJAX
    Réponses: 2
    Dernier message: 03/05/2012, 19h05
  4. Bug avec les strings
    Par sphere369 dans le forum Débuter
    Réponses: 5
    Dernier message: 19/02/2009, 19h59
  5. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

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