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 :

Problème de modification de char à l'entrée d'une fonction


Sujet :

MFC

  1. #1
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut Problème de modification de char à l'entrée d'une fonction
    Bonjour j'ai une fonction avec la signature suivante :

    ExpandCommand(char * szCmd)

    au moment de l'appel je fait passer la commande

    char szPreCmd[MAX_STRING_SIZE] ;

    ExpandCommand(szPreCmd)

    avant l'appel szPreCmd comme par

    "IGenIti ......"

    mais dans l'execution de la fonction ExpandCommand szPreCmd prends la valeur suivant!

    "GenIti....." Le I a été omis ! il ne se passe rien, juste une transmission : je ne sais pas comment il fait ca!

    j'ai bien vérifier pas à pas, des suggestions?

    merci

    IRNBRU

    [Merci d'éviter les titres "A l'aide", "au secours", et de privilégier une description claire]

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    le pointeur de chaine n'est pas modifié ?
    genre un szPreCmd++ caché

    et sinon, on peut peut-etre voir la convention d'appel ? le prototype, l'appel, etc ...

  3. #3
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut
    ce n'est pas possible.
    verifies que les adresses sont identiques( a mon avis non) avant l'appel et dans l'appel.
    sinon post un peu de code un peu plus explicite .

  4. #4
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Comment verifier les adresses avant l'appel de la fonction et dans l'appel?

    Dans le fichier .h j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Nico
    {
     
    .....
     
    protected :
     
    // Expand the command with the var
    char * ExpandCommand(char * szCmd) ;
     
    ..
    };
    dans le fichier cpp j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char * Nico::ExpandCommand(char * szCmd)
    {
     
    ....
     
    }
    rien de particulier, je me demande si le fichier que je fais appel correspond bien à celui de mon code ??

    merci

    IRNBRU

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    avec ton debbuggeur, tu mets un point d'arret avant l'appel et dans l'appel et tu regardes dans les variables si l'adresse de la chaine est la meme

    par contre, tu es sur de ne pas faire de confusion entre le paramètre et le retour de la fonction ?

  6. #6
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    naaan c'est un paramètre d'entrée, l'adresse d'ailleur n'est pas la même, j'ai 0x150c78f4 avant l'appel et dans l'appel j'ai 0x150c78f5 ! quelle serait le problème??

    Merci encore pour votre gentillesse

    IRNBRU

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je ne vois pas comment c'est possible,

    l'adresse doit etre la meme dans la mesure où c'est un passage de pointeur !


    l'appel est-il vraiment comme tu le décris ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char szPreCmd[MAX_STRING_SIZE] ;
     
    ExpandCommand(szPreCmd)
    n'y a-t-il pas une modification de szPreCmd avant l'appel ?

  8. #8
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    pas réellement, c'est

    RunCommand(ExpandCommand(szPreCmd), FALSE)

    mais expandcommand serait appelé d'abord n'est ce pas?

    IRNBRU

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    expandCommand est appelé d'abord, effectivement, mais je ré-itère, ce n'est pas possible.

    Trace la chaine juste avant l'appel de la fonction, et au debut de l'appel de la fonction, pour voir à quel endroit elle ne correspond pas à tes attentes, mais ce qui est certain, c'est qu'au moment de l'appel et au tout début de la fonction, elles ont la meme valeur

  10. #10
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Comment peut on expliquer le changement d'adresse de la variable que j'ai mentionné auparavant? C'est fou! j'ai envie d'exploser

    merci pour votre patience
    IRNBRU

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Je ne l'explique pas

    Peux-tu fournir un code minimaliste qui permet de reproduire l'erreur ?

  12. #12
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Bizzare, j'essaie la fonction OutputDebug et le logiciel DebugView, il ne se fait rien! j'ai de plus en plus de doutes sur le fichier appelé, je modifie du code et le code qui est exécuté pas à pas ne fait rien! faut bien que je regarde quel fichier dll est appelé, je suis perdu...

    IRNBRU

  13. #13
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Comment savoir quelle dll est chargée et lancée, ou faut il regarder dans les propriétés du projet?? je suis plus que sur maintenant que le code et le code exécuté ne correspondent pas,

    a l'aide please

    thanks

    IRNBRU

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et puis, vérifie aussi que c'est la bonne classe qui est appelée, à partir du bon objet (en l'occurence l'objet "nico" ici)

  15. #15
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    je pense avoir résolu mon problème, VC++ ne chargeait pas le bon fichier dll du coup toutes les instructions décalées ne collaient plus comme il chargeait une dll plus ancienne que celle du code! D'où le décalage, c'est extrement dangereux VC++ lol

    Je vérifie encore avant de considérer résolu

    merci
    IRNBRU

  16. #16
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Citation Envoyé par irnbru
    c'est extrement dangereux VC++ lol
    ça dépend entre les mains de qui

  17. #17
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    je profite de ce post pour dire que (c'est général et je ne vise personne):
    La bonne réaction dans ce genre de réaction c'est :
    Ce qui arrive est impossible, donc comme dirait Mulder la vérité est ailleurs.

    Alors on utilise le merveilleux debbuger de VC on met des points d'arrets,trace etc ..
    Et surtout problème fréquent on s’assure que les sources/modules en questions sont bien a jour .
    Des fois un simple clean + rebuild ALL permet de résoudre l’impossible.

    donc toujours se remettre en cause avant de dire c'est le compilo ,c'est les MFC etc..

  18. #18
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    j'ai un warning du genre :

    c:\travail\dev\aaseq\aaseqdll\debug\msado15.tlh(409) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

    c'est quoi ce délire? lol

    est ce important?

    IRNBRU

  19. #19
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ca doit etre un problème de signed/unsigned
    quel est le code de la ligne qui fait un warning ?

  20. #20
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    incroyable quand même microsoft!

    regardez vous même; il faut désactiver cet avertissement car ils sont trop fénéasse de réparer de bug lol

    http://support.microsoft.com/default...;EN-US;q253317

    IRNBRU

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/09/2011, 08h42
  2. Réponses: 4
    Dernier message: 21/06/2010, 01h19
  3. Réponses: 1
    Dernier message: 01/04/2010, 14h49
  4. [Batch] Modification des paramètres d'entrée dans une boucle FOR
    Par reppier dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 15/06/2009, 15h23

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