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 :

Contenu d'une variable qui disparait :/


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 40
    Par défaut Contenu d'une variable qui disparait :/
    Bonjour

    Comme l'indique le titre, j'ai un petit soucis de vairable.. je vous montre mon code :
    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
     
    void Server::Rename(char* fileName, SOCKET& soc){
      Commande* com;
      HANDLE hFile;
      com = new Commande("","");       
      cout << "FILENAME1 : " << fileName <<endl;
      if ((hFile = CreateFile(fileName,
                              GENERIC_WRITE,
                              0,
                              NULL,
                              OPEN_EXISTING,
                              0,
                              NULL)) == INVALID_HANDLE_VALUE){
        sendReply(550,soc);
        return;
      }
      CloseHandle(hFile);  
      sendReply(351,soc);
      cout << "FILENAME1 : " << fileName <<endl;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void Server::sendReply(int code, SOCKET& soc){
      char tmp[65535]= "";
      int nbcar;
      strcat(tmp," ");     
      strcat(tmp,getMsgReply(code));
      nbcar = send(soc,tmp,strlen(tmp),0);                  
      cout << "réponse '"<< tmp << "' envoyee"<<endl;
    }
    Après l'éxécution de la commande : sendReply(351,soc);, le contenu de mon char* fileName disparait.. je ne comprend pas trop pourquoi si quelqu'un pouvait m'éclaircir les idées...

    merci

    PS: je travail sous Windows avec Dev-c++ 4.9.9.2

  2. #2
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Salut Aleksis,
    je voudrais savoir, tu es sûr que sendReply(351,soc); est exécutée, car tu fais un return; dans le if donc si tu passes la fonction se termine.
    Le mieux est peut-être de faire un cout après la métode rename.
    Tu peux me dire comment tu as initialisé ton char * ?

    b Oo

  3. #3
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 40
    Par défaut
    SAlut b Oo
    alors mon char est initialiser a l'aide d'un constructeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Commande::Commande(char* commande, char* parametre){
      cmd = commande;
      param = parametre;
    }
    jusque là, aucun soucis, je peu utiliser tout ça sans problème ( j'ai fais des methode get).

    une fois ma structure crée, je pass le champs param en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if (strcmp(com->getCmd() ,"RNFR") == 0){
           Rename(com->getParam(),soc);
     }
    la j'arrive donc dans ma fonction avec ma variable bien initialisé à la bonne valeur.

    Et oui je suis sur que sendReply(351,soc); est exécutécar je fais un cout juste avant et un autre juste après et les 2 s'affiche. Juste que sur le 2eme ma variable fileName ne contient plus rien :s

  4. #4
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Tu ne peux pas modifier ce char * (car tu n'alloues pas de mémoire pour la chaine) donc met le en const char *.
    Si cela n'a pas résolu le problème, l'erreur doit venir d'ailleurs (tu dois modifier ton pointeur).

    b Oo

  5. #5
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 40
    Par défaut
    j'ai suivi ton conseil, j'ai mi ma var en const.. mais hélas.. le problème est toujours la :/ merci quand même

  6. #6
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Tu peux me donner le code de CreateFile(...), car cela vient peut-être de là.

    b Oo

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

Discussions similaires

  1. Contenu d'une variable qui est elle même variabilisée en partie
    Par Samuel25_t dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 08/12/2014, 17h10
  2. Réponses: 2
    Dernier message: 25/06/2013, 15h15
  3. Réponses: 2
    Dernier message: 21/09/2009, 17h17
  4. Réponses: 11
    Dernier message: 22/06/2005, 11h04
  5. [WebForms][Javascript] Une DropDownList qui disparait....
    Par prem's dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 02/03/2005, 10h50

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