Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1546 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

utilisation des .INI en C

n°460753
Kristoph
Posté le 17-07-2003 à 18:35:20  profilanswer
 

Reprise du message précédent :

HelloWorld a écrit :

Citation :

La mode est donc au XML


 
+1
 
La bdr a justement été crée pour mettre fin au bordel des fichiers ini. Je crois qu'elle déboule avec Win32 (pas eu d"écho avec Win16). On l'appelle du coup de bordel organisé :D
 
Utiliser XML a l'avantage que ton code est portable.


 
Et bien ils s'y sont mal pris les gars de chez Crosoft. C'est fait des lustres que les systèmes de type Unix se débrouillent très bien avec des fichiers de config texte proche des fichiers ini.

mood
Publicité
Posté le 17-07-2003 à 18:35:20  profilanswer
 

n°461351
HelloWorld
Salut tout le monde!
Posté le 18-07-2003 à 11:30:44  profilanswer
 

Bah on est parti de DOS quand même ... ça été bricolage après bricolage jusqu'à WinMe ... :(


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°461366
Giz
Posté le 18-07-2003 à 11:38:42  profilanswer
 

bon j'essaie de lire un fichier conf.ini ds "D:\amap\conf.ini" et la fonction copie 0 caractere dans le buffer :\
 
extrait fichier conf.ini :

[AD_CONFIG]
Freq=10
ClkSrc=1
Burst=0
Range=0
NbChannel=2


 
mon code :

char tmp[10];
int nb;
nb = GetPrivateProfileString("AD_CONFIG", "Freq", "", tmp, sizeof(tmp), "D:\amap\conf.ini" );
printf("nb = %d\n", nb);
printf("Freq = %d\n", atoi(tmp));


 
sortie :

nb = 0
Freq = 0


 
Pkoi nb = 0  :??:

n°461373
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-07-2003 à 11:42:53  profilanswer
 

"D:\amap\conf.ini" -> "D:\\amap\\conf.ini" (si la chaîne est comme ça dans ton code)


Message édité par antp le 18-07-2003 à 11:43:12

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°461378
skeye
Posté le 18-07-2003 à 11:46:33  profilanswer
 

antp a écrit :

"D:\amap\conf.ini" -> "D:\\amap\\conf.ini" (si la chaîne est comme ça dans ton code)


Si la chaine est comme ca dans son code ca devrait pas compiler non? à moins que \c et \a soient définis...:??/

n°461385
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-07-2003 à 11:47:56  profilanswer
 

pourquoi ça devrait pas compiler ?
j'ai jamais eu d'erreurs de compil, et j'ai déjà cherché longtemps à cause de bêtes fautes comme ça :D
 
\a existe -> c'est sans doute là qu'est le problème


Message édité par antp le 18-07-2003 à 11:49:14

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°461388
Giz
Posté le 18-07-2003 à 11:49:25  profilanswer
 

antp a écrit :

"D:\amap\conf.ini" -> "D:\\amap\\conf.ini" (si la chaîne est comme ça dans ton code)


 
Encore Merci  :jap:  
Ils auraient pu le dire dans la MSDN :/
Y aurait-il une abreviation style Unix (.) pour specifier le repertoire ou se situe le projet (fichier .dsw) au lieu de mettre le path en dur ?

n°461401
skeye
Posté le 18-07-2003 à 11:56:54  profilanswer
 

antp a écrit :

pourquoi ça devrait pas compiler ?
j'ai jamais eu d'erreurs de compil, et j'ai déjà cherché longtemps à cause de bêtes fautes comme ça :D
 
\a existe -> c'est sans doute là qu'est le problème


Quand je fais des copier/coller de chemins de ce genre dans mon code je me fais gicler à la compilation par des "invalid escape sequence", ou un truc du style...évidemment si c'est défini ca passe, mais c'est pas de bol! [:skeye]

n°461403
skeye
Posté le 18-07-2003 à 11:58:17  profilanswer
 

giz a écrit :


 
Encore Merci  :jap:  
Ils auraient pu le dire dans la MSDN :/
Y aurait-il une abreviation style Unix (.) pour specifier le repertoire ou se situe le projet (fichier .dsw) au lieu de mettre le path en dur ?


si tu ne mets que le nom de ton .ini il va le chercher dans le repertoire de l'exécutable...

n°461405
Giz
Posté le 18-07-2003 à 12:00:22  profilanswer
 

skeye a écrit :


Quand je fais des copier/coller de chemins de ce genre dans mon code je me fais gicler à la compilation par des "invalid escape sequence", ou un truc du style...évidemment si c'est défini ca passe, mais c'est pas de bol! [:skeye]  


 
effectivement j'a v un warning : 'c' : unrecognized character escape sequence
dc je mettais seulement : "D:\amap\\conf.ini" et la plus de warning !


Message édité par Giz le 18-07-2003 à 12:00:48
mood
Publicité
Posté le 18-07-2003 à 12:00:22  profilanswer
 

n°461409
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-07-2003 à 12:01:18  profilanswer
 

skeye a écrit :


si tu ne mets que le nom de ton .ini il va le chercher dans le repertoire de l'exécutable...


 
hum je ferais quand même une récup de GetModuleFileName pour connaître le chemin de l'exe, et le spécifier.
 
parce que dans ma version de la doc de l'API Win32:

Citation :


 If this parameter does not contain a full path to the file, Windows searches for the file in the Windows directory.  


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°461412
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-07-2003 à 12:02:35  profilanswer
 

giz a écrit :

Ils auraient pu le dire dans la MSDN :/


 
Heu j'ai appris ça lors d'un de mes tout premiers cours de C, il faut mettre \\ pour un vrai \, vu qu'il sert pour les \n et autres.
Ça n'a rien à voir avec l'API Windows ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°461417
skeye
Posté le 18-07-2003 à 12:06:35  profilanswer
 

antp a écrit :


 
hum je ferais quand même une récup de GetModuleFileName pour connaître le chemin de l'exe, et le spécifier.
 
parce que dans ma version de la doc de l'API Win32:

Citation :


 If this parameter does not contain a full path to the file, Windows searches for the file in the Windows directory.  




Faudra que je vérifie, mais il me semble que ca marchait en mettant directement le nom du .ini, avec un de mes progs... [:skeye]

n°461419
Giz
Posté le 18-07-2003 à 12:06:47  profilanswer
 

antp a écrit :


 
Heu j'ai appris ça lors d'un de mes tout premiers cours de C, il faut mettre \\ pour un vrai \, vu qu'il sert pour les \n et autres.
Ça n'a rien à voir avec l'API Windows ;)


 
ouai mais bon sachant qu'il attend un path, je vois pas pkoi il interpreterait des sequences d'echappement

n°461424
skeye
Posté le 18-07-2003 à 12:10:40  profilanswer
 

giz a écrit :


 
ouai mais bon sachant qu'il attend un path, je vois pas pkoi il interpreterait des sequences d'echappement


C'est le C qui est comme ca!!!
dans une chaine de caractère, un \ est un caractère d'échappement, point barre!

n°461425
Giz
Posté le 18-07-2003 à 12:11:09  profilanswer
 

antp a écrit :


 
hum je ferais quand même une récup de GetModuleFileName pour connaître le chemin de l'exe, et le spécifier.
 
parce que dans ma version de la doc de l'API Win32:

Citation :


 If this parameter does not contain a full path to the file, Windows searches for the file in the Windows directory.  




 
et si mon ini ne pas ds le meme chemin que l'exe de l'appli ?
...mais avec mon .dsw (repertoire courant)

n°461426
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-07-2003 à 12:14:37  profilanswer
 

giz a écrit :


 
et si mon ini ne pas ds le meme chemin que l'exe de l'appli ?
...mais avec mon .dsw (repertoire courant)


 
c'est quoi le dsw ? :??:
 
Tu peux récupérer le répertoire "courant" (GetCurrentDirectory ou un truc du genre) mais selon la version de Windows il est fixé au dossier de l'exe ou "mes documents".


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°461430
Giz
Posté le 18-07-2003 à 12:18:53  profilanswer
 

skeye a écrit :


C'est le C qui est comme ca!!!
dans une chaine de caractère, un \ est un caractère d'échappement, point barre!


 
Vi c vrai  :jap:

n°461466
HelloWorld
Salut tout le monde!
Posté le 18-07-2003 à 12:59:30  profilanswer
 

Citation :

Ils auraient pu le dire dans la MSDN


 
Dans la MSDN ils disent de ne pas hard coder les path.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°461582
El_gringo
Posté le 18-07-2003 à 14:27:58  profilanswer
 

HelloWorld a écrit :

Citation :

Ils auraient pu le dire dans la MSDN


 
Dans la MSDN ils disent de ne pas hard coder les path.


 
Ouais, 'faut les stocker dans un .ini ! :D

n°461596
El_gringo
Posté le 18-07-2003 à 14:37:06  profilanswer
 

Bon, évidement, dans ce cas, c'est con, vu que c'est puor lire le .ini qu'on veut le path.
Ma solution, c'est de récupérer le chemin de l'exe, comme ceci :

Code :
  1. // m_hInstance, c'est le HINSTANCE hInstance passé en paramètre à ton WinMain
  2. GetModuleFileName((HMODULE)m_hInstance /*this module */, m_dir, sizeof(m_dir));


Et puis après, on se fait un petit PathRemoveFileSpec et on a le chemin de l'exe.
 
PS : PathRemoveFileSpec est dans shlwapi.dll, il faut donc inclure  shlwapi.h là ou on utilise la fonction, et linker shlwapi.lib au projet.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[C++] Ya moyen de sauvegarder d'un seul coup une structure ds un .INI?utilisation d'une variable avec winexec sous delphi
[C] Comment detecter l'utilisation des fleches de directions [RESOLU][PHP]Quest. sur l'utilisation de "switch case break" pour des includes
[win2000] recuperer taux d utilisation cpu et mem[VB] Utilisation de zlib.dll
[java] utilisation de timeZone[VisualStudio] Probleme lié a l'utilisation d'un RichEditCtrl
Utilisation DropTarget pour Enqueue dans playlist 
Plus de sujets relatifs à : utilisation des .INI en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR