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 :

unrecognized character escape sequence


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut unrecognized character escape sequence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unrecognized character escape sequence
    J'ai rencontré cet erreur à la suite d'utilisation d'une variable comme suit:

    En cherchant un peu j'ai pu supprimer cet erreur en appliquant:

    Ma premiere question est pourquoi ce dysfonctionnement?

    Ensuite, j'ai une IHM en MFC dans laquelle j'utilise un controle de type Browser qui me renvoit le chemin d'un fichier selectionné, du genre:

    D:\C++\PGM\save.txt
    Le probleme est qu'il m'est impossible de l'utiliser car il n'y a pas de double slash ( \\ ).

    Comment puis-je faire?

  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
    il est normal de doubler le \ , c'est la syntaxe

    sinon ton chemin est stocké dans une variable, ca ne posera pas de problème

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Ok pour la syntaxe.

    Mais j'utilise une fonction qui ne réagit pas de la meme facon lors d'une utilisation comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    *argv="C:\\sauvegarde2"; ///fonctionne
    *argv="C:\sauvegarde2"; ///ne fonctionne pas
    Sachant que ma variable prends la deuxiemme forme ( sans double \ ),
    cela ne fonctione pas!

  4. #4
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    c'est la base des manipulations de chaines !!!
    le caractere '\' indique un caractère speciales (\n,\r,...)

    pour lui il ne voit pas la séquence '\' puis \'s' mais le caractère '\s'. T'es obligé de doubler le\
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  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
    je repete que ca ne change rien
    c'est seulement si tu écris en dur dans le code qu'il faut doubler les \\
    si c'est enregistré dans une variable, il n'y a pas à s'en faire

  6. #6
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    euh nico j'espere que tu pense que je n'ai aps compris ca ?! :d je penses qu'il le fait en dur
    en plus je comprends pas cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *argv="C:\\sauvegarde2";
    tu veux affecter une valeur à argv ?
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  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 suis sur qu'on parle de la meme chose

    mais si j'ai bien compris, son but est de récuperer la valeur d'un filedialog et de le passer à sa fonction.
    Il teste en passant un chemin en dur, et voit qu'ily a besoin de doubler les \\
    Il voit que dans le filedialog, il y a un seul \ ; donc il a peur que ca ne marche pas
    Mais comme le résultat du filedialog sera dans une variable, il n'y aura pas de soucis

    enfin ... si j'ai tout compris

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Le probleme est que j'utilise une fonction qui existe et que je ne peux modifier, et qui ne fonctionne apparenment que qd il y a des doubles \.

    Je ss un peu dans la .......

    Et

  9. #9
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    t'es tétu toi lol

    t'as fonction tu lui passes quoi en paramètres une valeur dure ou bien une variable ?!
    si c'est une valeur dure t'es OBLIGE DE METTRE DOUBLER LE \
    sinon c'est fait automatiquement !!!!!
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    une variable mais cela marche pas qd même......


  11. #11
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    poste le code de ta fonction
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    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
    21
    22
    23
    24
    25
     
    //////////////////////////////Si le boutton radio capture OffLine:Oui est coché//////////////////// 
     
    if(pTheApp->m_OffLine == 1) ////   Si le boutton radio IDC_RadioOffLine1 est coché, pTheApp->m_OffLine == 1
           //// -> renvoyé par void CSnifferDlg::OnRadioOffLine1() dans SnifferDlg.cpp
     {
     CString strOpenCap;  
     strOpenCap=pTheApp->m_EditOffLine;  //// remplissage de la variable 
     char *adresseOffLine=(char*)LPCTSTR(strOpenCap);   
    //////////////////////////////Si le boutton radio Filtre est coché//////////////////// 
     if(pTheApp->m_filtre == 1) 
     
      {
     
      } 
    //////////////////////////////Si le boutton radio Save Txt est coché//////////////////// 
     if(pTheApp->m_SaveTxt == 1) 
      {
      // CString m_EditSaveTxt;
       CString strSaveTxt; //// variable permettant de récupérer le chemin du fichier CAP ds lequel on souhaite effectuer la sauvegarde
       strSaveTxt= pTheApp->m_EditSaveTxt;
       char *adresseTxt=(char*)LPCTSTR(strSaveTxt);
      // MessageBox(adresseTxt);
       capt_off(&adresseTxt, &adresseOffLine); /// J'APPELLE MA FONCTION EN LUI FOURNISSANT EN PARAMMETRE LE CHEMIN DU FICHIER CHOISI
      }
    MA FONCTION APPELLEE:

    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
     
    int capt_off(char **argc, char **argv)
    {
    clean(*argc, stdin);
    //clean(*argv, stdin);
    stream = fopen( *argc, "w" );
     
    //*argv="C:\\sauvegarde2";   //// Avec ceci en dur ca fonctionne
    //*argv="C:\sauvegarde2";   //// Avec ceci en dur ca ne fonctionne pas
     
     /* Fonction de capture fournie par WinPcap que je ne peux modifier */
     if ((fp= pcap_open_offline(reinterpret_cast<const char *>(*argv),   
           errbuf     // error buffer
           )) == NULL)
     {
      fprintf(stderr,"\nUnable to open the file %s.\n", *argv);
      return -1;
     }
     printf("ok");

  13. #13
    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
    Citation Envoyé par beb30
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     char *adresseOffLine=(char*)LPCTSTR(strOpenCap);
    on t'a déja dit que ca, c'était mal

    utilise l'opérateur const char *

  14. #14
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    je comprends pas pq tu fais des pointeurs de pointeurs sur chaines :s !!!!
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((fp= pcap_open_offline(reinterpret_cast<const char *>(*argv),
    Mouais, on a vu mieux.

    Le pb que tu as, c'est que lorsque tu écrius dans ton code "C:\sauvegarde.txt", le compilateur doit transformer cette phrase en chaîne de caractères. Or on a parfois besoin de caractères spéciaux, et pour dire qu'on veut un caractère spéciale, on échappe un caractère, comme \n,\t ou \0. Le problème est qu'on utilise \, donc pour dire qu'on veut vraiment un \, il faut dire au compilateur qu'on ne veut pas échapper le \\ en en mettant 2.
    Après, pendant l'exécution, on ne passe plus par le compilateur, donc pas besoin de \\.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Merci a tous pour vos conseils.

    je repete que ca ne change rien
    c'est seulement si tu écris en dur dans le code qu'il faut doubler les \\
    si c'est enregistré dans une variable, il n'y a pas à s'en faire
    C'est vrai.

    je comprends pas pq tu fais des pointeurs de pointeurs sur chaines :s !!!!
    Je les ai enlevé

    Ca fonctionne a présent.

    Coooooolllllllllllllllllll!!!!

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

Discussions similaires

  1. escape sequence ricoh mfp pour les tray 1 et 4
    Par cpf2006 dans le forum Périphériques
    Réponses: 0
    Dernier message: 02/04/2012, 15h31
  2. [RegEx] Compilation failed: unrecognized character
    Par lmplmp dans le forum Langage
    Réponses: 11
    Dernier message: 30/05/2010, 11h38
  3. interpréter des escape sequences
    Par morgalel dans le forum Général Java
    Réponses: 1
    Dernier message: 08/03/2008, 16h47
  4. unknown escape sequence
    Par Ghunter59 dans le forum C
    Réponses: 10
    Dernier message: 31/10/2007, 12h55
  5. Réponses: 15
    Dernier message: 16/11/2005, 16h25

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