Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Invité de passage
    Inscrit en
    juillet 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : juillet 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut wchar_t contenant une chaine avec parentheses

    Mon nom de fichier est "C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Media Player\Cache d’images\LocalMLS\{2C0A022A-D857-4EBB-A139-C3F9E4FB1961}.jpg"

    Je recupere le fichier de cette facon, ce qui ne pose aucun probleme pour des noms de fichiers sans parenthese.

    Code :
    1
    2
    3
    4
    5
    6
    7
    int main(int n,char *params[])
    {
    wchar_t fichier_source[1024];
    char* fichier=params[1];
    mbstowcs(fichier_source,fichier,1023);
    ///  puis traitement par gdiplus
    }
    Je pense que les parenthèses posent le probleme, si quelqu'un pouvait m'aider ou me mettre sur une piste.
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2010
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2010
    Messages : 565
    Points : 1 145
    Points
    1 145

    Par défaut

    Je ne vois pas vraiment pourquoi tu utilises cette fonction mais tu dois en avoir l'utilité... Pourquoi ne pas envoyer directement params[1] dans ta fonction ? Je l'ai testé de mon côté et le problème ne vient pas de là. Tu as quoi comme résultat dans fichier_source ?

  3. #3
    Invité de passage
    Inscrit en
    juillet 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : juillet 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Merci de ta réponse.
    Je lance l'executable depuis une ligne de commande et gdiplus ne fonctionne pas avec des char, d'où l'utilite de le convertir en wchar_T.
    Ensuite redimensionnement + filtres, etc... sur l'image.
    Je debute en c++ et j'ai déjà créé pas mal de fonctions qui marchent tres bien dont celle ci sauf qu'avec ce nom de fichier, il ne se passe rien, l'exe se lance puis se referme.
    Dans char *fichier je recupere bien le nom de fichier avec des doubles slash. Par contre je n'arrive pas a afficher le resultat de fichier_source avec messagebox puisque messagebox necessite un char donc je suis un peu coincé pour debugger.

  4. #4
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2010
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2010
    Messages : 565
    Points : 1 145
    Points
    1 145

    Par défaut

    Tu fais une boucle et tu affiches chaque valeur en la castant en char avec std::cout. C'est ce que j'ai fait et ça a marché parfaitement, c'est pour ça que je pense qu'il y a un problème ailleurs dans ton code. Tu sais à quel endroit il plante ?

  5. #5
    Invité de passage
    Inscrit en
    juillet 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : juillet 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    merci mais entre temps j'ai reussi a afficher la valeur et effectivement ce ne sont pas les parenthèses qui font planter mais l'apostrophe.
    Je recupere un "?" a la place de l'apostrophe dans le chemin du fichier apres l'avoir passé en wchar_t.
    Donc toujours pas résolu.

  6. #6
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2010
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2010
    Messages : 565
    Points : 1 145
    Points
    1 145

    Par défaut

    Une fois de plus ça marche pour moi... Comment ça se fait que t'as des double-quotes dans ta chaîne

    Edit : désolé j'avais mal lu, mais même avec un apostrophe ça marche. Comme je disais, je pense que le problème vient d'ailleurs.

  7. #7
    Invité de passage
    Inscrit en
    juillet 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : juillet 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Je te remercie de prendre le temps de m'aider.
    En fait cette fameuse apostrophe correspond au caractere Unicode /u209 et n'est donc pas celle qu'on tape ddepuis le clavier.
    C:\\Windows\\ServiceProfiles\\NetworkService\\AppData\\Local\\Microsoft\\Media Player\\Cache d’images\\LocalMLS\\{9FF89B47-FD86-43D8-8CDF-5355F7D02151}.jpg"
    J'ai donc testé en renommant le repertoire et en tapant l'apostrophe au clavier et la comme par miracle tout fonctionne.
    Donc c'est cette fameuse apostrophe qui fait planté.

  8. #8
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2010
    Messages
    565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2010
    Messages : 565
    Points : 1 145
    Points
    1 145

    Par défaut

    Si c'est pas un caractère ascii ça me paraît logique. Du coup ton problème est résolu ?

  9. #9
    Invité de passage
    Inscrit en
    juillet 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : juillet 2011
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Merci encore d'avoir consacré du temps a mon probleme.
    Oui le probleme est plus ou moins resolu, je pense que seul Microsoft a des idees aussi ambigues pour nommer un dossier. Ce dossier est en effet un des dossiers de Windows.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •