Pb dernier param de WritePrivateProfileString (API win32)

Résolu
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007 - 9 avril 2007 à 02:21
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 avril 2007 à 10:39
Bonjour,
j'ai l'impression que c'est un probleme tout à fait débile, mais il me handicape vraiment :
le dernier parametre de la fonction WritePrivateProfileString() indique comme vous le savez :P le nom du fichier .ini où la section, la cle et la valeur de celle ci seront écrites. Seulement si je met un chemin relatif (comme "test.ini" ), rien ne se passe (alors que la fonction retourne true).
Si je met par contre un chemin absolue ( "C:\\test.ini"), là y'a pas de probleme le fichier est bel et bien créé.
Donc ma question : une solution miracle ?
Sinon, comment récupérer le chemin d'où est exécuté l'exe ?

merci :)

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 avril 2007 à 03:05
Voici, d'après MSDN, l'explication de ton problème:

If the lpFileName parameter does not contain a full path and file name
for the file, WritePrivateProfileString searches the Windows directory
for the file. If the file does not exist, this function creates the file in the
Windows directory.

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 avril 2007 à 02:56
char path[256], *c = path+GetModuleFileName(0, path, 256);
while(*c != '\\') --c;
*c = 0;

path contiendra le répertoire de l'exécutable.

C++ (@++)<!--
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
9 avril 2007 à 03:10
merci bcp ca marche.
mais sauriez vous me dire pourquoi un chemin relatif ne marche pas ? je suis curieux de savoir :_
merci
0
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
9 avril 2007 à 03:12
Oops j'ai répondu un peu vite :) Effectivement mon fichier était créé dans le dossier C:/Windows ;
merci, bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
julien_boss Messages postés 165 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 24 octobre 2007
9 avril 2007 à 03:16
J'ai encore répondu un peu vite, dsl pour le triple poste.
J'ai trouvé une solution à mon prob :
au lieu de mettre le chemin absolu, pour créer le fichier test.ini ds le répertoire du .exe, par exemple, je met en dernier parametre ".\\test.ini"
Voilà, jspr que ca servira à d'autres
++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 avril 2007 à 10:39
Méfie toi des chemins relatifs comme de la peste, idem pour ".\\test.ini", ce sera dépendant de ta currentDirectory et elle peut très bien étre modifiée par le raccourci qui lancera ton prog.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous