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 :

Fichier .ini en mode console


Sujet :

C

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut Fichier .ini en mode console
    Bonjour,

    J'ai un code en console qui a besoin d'un paramètre
    J'ai essayé de faire un fichier ini et de le lire par les fonctions habituelles, mais je n'ai pas le résultat escompté ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    lg = GetModuleFileName(0, ExePath, _MAX_PATH);
    printf("<--DEBUG: ExePath1 : '%s' \r\n", ExePath);
    i=lg; 
    while((i) && (ExePath[i] != '\\'))
      i--;
    strcpy_s(ExePath+i, sizeof(ExePath), "\\params.ini");
    GetPrivateProfileString("PATH","path", "", Path, sizeof(Path), ExePath);
    printf("<--DEBUG: Path : '%s' \r\n", Path);
    dans l'ini :
    Dans la première instruction, la variable ExePath ne contient que la lettre du lecteur !
    Bon passe alors, je prends argv[0] et j'ai le chemein de l'exe, mais le problème est le même pour le GetPrivateProfileString
    On doit pouvoir utiliser ces fonctions en programmation console, non ?

    Merci pour vos avis.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 631
    Points : 10 558
    Points
    10 558
    Par défaut
    ExePath doit être un buffer assez large pour pourvoir faire la copie avec la fonction strcpy_s (<- LOL le truc inutile de Microsoft) de la chaîne "params.ini".

    Sinon, pourquoi ne pas chercher ton dernier [anti-]slash en commençant par la fin puisque tu connais la taille du chemin

    Sinon pour ton problème que crois-tu que sizeof(Path) te retourne? Erreur de débutant

    Il faut sûrement passer par la fonction GetLastError et son horrible conversion en chaîne de caractères pour sûrement te dire "not enough room - space"

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par foetus Voir le message
    strcpy_s (<- LOL le truc inutile de Microsoft)
    ça ne l'est pas, strncpy ne retourne pas toujours une chaine terminée par un octet nul, ce qui peut éventuellement ouvrir la voie à certaines attaques

    The C Standard (...), defines alternative versions of standard string-handling functions designed to be safer replacements for existing functions. For example, it defines (...) strncpy_s() (...) as replacements for (...) strncpy()

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par foetus Voir le message
    ExePath doit être un buffer assez large pour pourvoir faire la copie avec la fonction strcpy_s (<- LOL le truc inutile de Microsoft) de la chaîne "params.ini".
    J'ai modifié la taille du buffer dans GetPrivateProfileString
    j'ai même tenté de mettre le chemin de l'ini en dur, rien à faire la fonction ne me ramène rien !

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    essaye en mettant .\\params.ini

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    essaye en mettant .\\params.ini
    Finalement, j'ai trouvé ce code sur https://github.com/benhoyt/inih
    J'ai adapté le code de "ini.c" et le header poou en faire une dll, ça fonctionne !
    Seul inconvénient : pas de fonction d'écriture.
    Je marque résolu, mais le mystère reste entier pour la fonction "GetPrivateProfileString"
    Merci encore.

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

Discussions similaires

  1. Simuler l'éxécution en mode console d'un fichier Python
    Par rambc dans le forum Général Python
    Réponses: 14
    Dernier message: 05/09/2009, 00h20
  2. Comportement du mode console et du mode fichier
    Par Explorer101 dans le forum Prolog
    Réponses: 1
    Dernier message: 14/07/2009, 14h11
  3. Assistant transfert fichiers et parametres en mode console
    Par nemo69500 dans le forum Windows XP
    Réponses: 2
    Dernier message: 14/07/2008, 20h39
  4. Indy mode console manque fichier
    Par uriotcea dans le forum C++Builder
    Réponses: 17
    Dernier message: 05/04/2007, 16h41
  5. Inclure un fichier son en mode console !
    Par masterix59 dans le forum C
    Réponses: 8
    Dernier message: 01/01/2007, 23h37

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