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 :

GetModuleFileName type char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut GetModuleFileName type char
    Bonjour

    J'essaye de récupérer le chemin de mon fichier avec l'api GetModuleFileName.

    mon code est celui ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char path[255];
    GetModuleFileName(null,path,sizeof(path));
    Visual c++ me souligne path en rouge et comme erreur j'ai

    l'argument de type 'char*' est incompatible avec le paramètre de type LPTSTR
    J'ai chercher sur internet j'ai vue plusieurs code source en C++ et c'etais exactement la même chose donc je ne comprend pas.

    merci d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Il est probable que tu compiles en Unicode. Les fonctions utilisent alors des wchar_t plutôt que des char.

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TCHAR path[255];
    GetModuleFileName(null,path,sizeof(path) / sizeof(path[0]));
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    Ok je vais tester cela ce soir car la je peux pas.

    C'est quoi la différence à compiler en Unicode ou autre?
    Quel chapitre c++ parle de cela?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En faisant simple, une chaine de caractères est composée de caractères et traditionnellement, la taille d'un caractère est de 8 bits ce qui permet d'avoir 256 caractères différents.

    Cette limitation ne permet pas de coder les caractères des autres langages (arabe, chinois, japonais, ...), la notion de caractère a donc été étendue pour que les caractères (pour les chaines de caractères) maintenant puisse faire 16 bits soient 655536 caractères différents.

    Pour que cela soit transparent à l'utilisateur, l'environnement visual Studio dispose du type TCHAR et de ses cousins LPSTR, LPCSTR.

    Suivant une directive de compilation (la définition de la constante UNICODE), ce types sont redéfinis soit sur char soit sur wchar_t (qui est le char 16 bits).

    De plus, toutes les fonctions Microsoft qui attendent une chaine de caractères sont déclinées en 2 versions :
    • Une version Ansi (suffixée avec un A, GetModuleFileNameA() par exemple)
    • Une version Unicode (suffixée avec un W, GetModuleFileNameW() par exemple).


    Le fait de définir ou non la constante UNICODE va définir une macro GetModuleFileName qui pointera sur GetModuleFileNameA ou GetModuleFileNameW.

    Ainsi, le changement de non unicode vers unicode (ou l'inverse) sera totalement transparent pour le développeur pour peu que celui ci respecte ces contraintes (utilisation des macro TCHAR et de ses cousins).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    j'ai essayer le code il n'y a plus d'erreur mais sa m'affiche une suite de chiffre au lieu d'un chemin.

    merci pour l'explication.

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Probablement parce que tu afffiches ta chaine UNICODE comme une chaine de caractères standarts.

    Montre ton code d'affichage
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    Voila mon code
    Comment avoir plus d'info sur Unicode ect..? (chapitre C++)

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    cout est le flux pour les caractères ANSI (ASCII), wcout est le flux pour les caractères wide (donc unicode)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Par défaut
    ok merci bien pour ton aide ça marche.

    j'ai juste encore une petite question.
    Comment faire pour utiliser GetModuleFileName en Ansi et pas en Unicode?
    d'après ce que j'ai compris il y a GetModuleFileNameA().
    Mais comment ce fais t'il que certain code marche avec le que j'ai mis au début?

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par france38 Voir le message
    Comment faire pour utiliser GetModuleFileName en Ansi et pas en Unicode?
    d'après ce que j'ai compris il y a GetModuleFileNameA().
    Si tu veux explicitement forcer l'utilisation de la fonction ANSI (ou Unicode), c'est effectivement comme cela qu'il faut faire.

    Citation Envoyé par france38 Voir le message
    Mais comment ce fais t'il que certain code marche avec le que j'ai mis au début?
    Probablement que le code que tu as récupéré fonctionnait sur un environnement ANSI (et que tu ne le savais pas) et quand tu l'a mis dans ton environnement Unicode (que tu ne savais pas non plus), cela ne marchait plus.

    Pour qu'un code soit portable sans aucune intervention entre ANSI et UNICODE, cela demande une rigueur de tous les instants car il y a plein de petits pièges (et même encore maintenant, il m'arrive de me faire avoir sur des détails).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. variable de type char
    Par Yoshio dans le forum C
    Réponses: 18
    Dernier message: 23/02/2006, 10h48
  2. Réponses: 21
    Dernier message: 20/02/2006, 11h00
  3. Types : char vs. unsigned char
    Par Herode dans le forum C++
    Réponses: 3
    Dernier message: 15/02/2006, 21h39
  4. concaténer un type char à une chaine
    Par Fabs dans le forum C
    Réponses: 8
    Dernier message: 11/11/2005, 15h21
  5. Array subscript has type 'char'
    Par obelix dans le forum C
    Réponses: 11
    Dernier message: 31/10/2005, 18h21

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