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

MFC Discussion :

Bug de CString ? ou mauvaise utilisation !


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut Bug de CString ? ou mauvaise utilisation !
    Bonjour,

    J'ai affaire à un drôle de bug lorsque j'utilise la classe CString et surtout lorsque celle-ci fait appel à l'opérator+ visiblement.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CString Query="UPDATE "+m_Tables+" SET ";		
    for(int i=0;i<(int)m_pFX.m_TableauColonnes.m_nbElem;i++)
    		{
    			if(i==40)
    				i=40;
    			Query=Query+m_pFX.m_TableauColonnes.m_pTabString[i]+CString(" = '")+m_pFX.m_TableauValeurs.m_pTabString[i]+CString("',");
     
    		}
    Je m'explique : le if(i==40) me permet juste d'avoir un point d'arrêt à cet endroit car c'est à ce moment que la recopie ne se passe pas comme il faut.
    Lorsque j'ajoute le dernier element, la variable Query qui avait accumulé toutes mes chaines repassent à la valeur "". Pourtant je ne fais que des concaténations...
    Est ce que quelqu'un aurait une idée là dessus ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    attention en debug trace la visualisation de la CString est limitée a 256 caractéres (du moins avec vc6.0).
    pour visualiser la chaine il vaut mieux faire un AfxMessageBox et ne pas inspecter la variable en mode trace..
    Sinon la vérité est ailleurs, la CString fonctionne très bien sans bug connu .
    je m'en suis déjà servi dans le même contexte que toi ( la génération d'une requete SQL) sans problème.
    quel est la nature de l'objet m_pTabString,il ne faudrait pas faire * ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Ah, ça je ne le savais pas... Mais est ce que ça explique le remplacement complet de ma chaine de caractère par une chaine vide à la dernière concaténation ? Par ce que si c'était limité à 256 caractères, j'arriverai normalement à suivre la trace des 256 premiers caractères et non pas une chaine vide ?

    edit : m_pTabString[i] est un tableau de CString donc normalement pas de déférencement... Et puis ça marche pour les premières chaines alors je vois pas pourquoi ça ne marcherai pas pour la 40eme chaine

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par globule71
    Ah, ça je ne le savais pas... Mais est ce que ça explique le remplacement complet de ma chaine de caractère par une chaine vide à la dernière concaténation ? Par ce que si c'était limité à 256 caractères, j'arriverai normalement à suivre la trace des 256 premiers caractères et non pas une chaine vide ?
    non ça n'explique pas tout, mais tu n'as pas repondu à
    quel est la nature de l'objet m_pTabString,il ne faudrait pas faire * ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Desolé j'avais pas vu ta dernière question

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Bon j'ai tenté d'arrêter la recopie dans la boucle du for juste avant la dernière chaine pour récupérer une chaine remplie... et j'ai esseyé de remplir avec le dernier element hors de la boucle : mais cette fois ci ça plante méchamment sur l'operator+ qui reçoit en paramètre un pointeur de la chaine à concaténer ainsi que.... un pointeur vide !
    Visiblement à l'appel de l'opérator+ je perds carrément le pointeur du CString
    Pour t'as question si t'as pas vu le edit du dessus j'ai bien un tableau de CString avec le m_pTabString

Discussions similaires

  1. Vilain bug ou mauvaise utilisation de ma part ?
    Par ForgetTheNorm dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 03/04/2008, 16h39
  2. Mauvaise utilisation des ressources [DATAWARE HOUSE]
    Par bvincent dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/06/2007, 12h28
  3. mauvaise utilisation de having ?
    Par maysa dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/06/2007, 16h48
  4. Bug ou mauvaise utilisation des FileUpload?
    Par mael94420 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 03/05/2007, 09h13
  5. Mauvaise utilisation d'une DLL ?
    Par _SamSoft_ dans le forum C
    Réponses: 6
    Dernier message: 21/02/2007, 00h14

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