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

Visual C++ Discussion :

Chemin relatif ".//fichier.ini" GetPrivateProfileString


Sujet :

Visual C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 30
    Points : 24
    Points
    24
    Par défaut Chemin relatif ".//fichier.ini" GetPrivateProfileString
    bonjour à tous,

    pourriez-vous m'aider ? car je bute sur le problème suivant :
    - sous windows,
    - je réussis à lire dans un fichier ini
    - qui est dans le même répertoire que ma dll
    - développée sous Visual C++ 2010 Express
    - quand je fournis le chemin absolu "c:/monfichierini.ini" ça marche...

    mais il se trouve que je ne maîtrise pas dans quel répertoire sera installée la dll par l'utilisateur, j'ai donc besoin d'indiquer le chemin relatif = le même répertoire que ma dll.

    Je pensais pouvoir passer en paramètre de GetPrivateProfileString le chemin
    - "monfichierini.ini" directement ... mais cela ne fonctionne pas...

    - ".//monfichierini.ini" ne marche pas non plus...

    J'ai bidouillé le format, rien ne passe...

    Autre piste, avec GetCurrentDirectory : mais VStudio me dit qu'il n'est pas déclaré... quelle librairie faut-il ajouter ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char path[MAX_PATH];
    GetCurrentDirectory(sizeof(path), path);
    merci pour votre aide : je craque sur un truc qui doit être tout bête ?!!

  2. #2
    Membre éprouvé
    Homme Profil pro
    R&D imagerie 3D / prog embarquée
    Inscrit en
    mars 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : R&D imagerie 3D / prog embarquée
    Secteur : Santé

    Informations forums :
    Inscription : mars 2007
    Messages : 417
    Points : 1 247
    Points
    1 247
    Par défaut
    Salut,

    Je pense que tu confonds le dossier où se trouve ta DLL et ton dossier d'exécution. Typiquement, sous VC++, le dossier où se trouve ta DLL est Debug ou Release, mais le dossier d'exécution est celui où se trouve le code de ton projet de démarrage.
    Par exemple, si ta solution Tutu contient un projet de DLL Tata et un projet pour tester ta DLL Toto, tu devrais avoir avoir une arborescence du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Tutu
    |-> Debug
    |    |-> Tata.dll
    |    |-> Toto.exe
    | 
    |-> Release
    |    |-> Tata.dll
    |    |-> Toto.exe
    | 
    |-> Tata
    |-> Toto
    Si tu ne changes pas tes options par défaut, ton dossier d'exécution devrait être Toto.

    Pour GetCurrentDirectory(), il faut inclure Windows.h

    Bon courage !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    merci Djuju !

    la cible est de créer un plugin (une dll) qui est ajoutée dans un répertoire d'un programme tiers (un jeu de voiture !) pour extraire des informations de télémétrie.

    Donc, je compile mon programme sous la forme d'une dll.

    Ce plugin est copié par l'utilisateur dans un répertoire de son application
    c:\programme\jeu\plugins\
    mais pas forcément sur c: parfois les joueurs installent à d'autres endroits...

    Mon plugin utilise un fichier ini positionné dans le même répertoire pour des paramétrages utilisateurs. Le fichier ini évite de toucher à la base de registre, d'effectuer une installation...

    Donc je souhaite que mon programme en c++, lorsqu'il sera utilisé sous forme de dll, trouve le fichier ini !!!

    mais ça ne fonctionne pas ... merci pour vos lumières

    j'ai bien inclus #include <windows.h>
    mais VisualStudio me dit "Error: Cette déclaration n'a pas de classe de stockage ou de spécificateur de type"

    1>plugin.cpp(78): error C2365: 'GetCurrentDirectoryA'*: redéfinition*; la précédente définition était 'fonction'
    1> C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winbase.h(8887)*: voir la déclaration de 'GetCurrentDirectoryA'
    >plugin.cpp(78): error C2078: initialiseurs trop nombreux
    1>plugin.cpp(78): error C2440: 'initialisation'*: impossible de convertir de 'char [260]' en 'int'
    1> Aucun contexte dans lequel cette conversion est possible

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Pas besoin de GetCurrentDirectory !
    Voilà ce qui a fonctionné finalement comme syntaxe du chemin relatif :

    LPCSTR localPath="Plugins\\MonFichierIni.ini";

    pff, quelle galère
    merci à Djuju pour son aide

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

Discussions similaires

  1. utiliser les chemin relatif de fichier depuis un .jar
    Par wechteuf dans le forum NetBeans
    Réponses: 2
    Dernier message: 27/12/2008, 16h53
  2. chemin dans un fichier ini
    Par grabriel dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2008, 17h25
  3. Chemin relatif de fichier
    Par Patrick Njokou dans le forum BIRT
    Réponses: 4
    Dernier message: 12/06/2007, 16h41

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