Ecrire/lire un fichier *.ini en c/c++

Soyez le premier à donner votre avis sur cette source.

Snippet vu 29 890 fois - Téléchargée 31 fois

Contenu du snippet

Voici un petit article pour apprendre rapidement et sans effort à écrire des données nécessaires à l'initialiastion d'un programme dans un fichier "mon_prog.ini".

Un fichier d'initialisation est toujours utile pour une application. Par exemple, on a toujours besoin de sauvegarder les préférences de l'utilisateur quelque part. A l'initialisation de l'interface, il est avantageux que l'utilisateur la retrouve dans le même état qu'avant la fermeture précédentes (emplacement des barres d'outils, des boutons, etc.). Le fichier d'initialisation est la solution.

Un fichier d'installation est de la forme suivante :

[SECTION1]
CLE1=string1
CLE2=string2
CLE3=string3
[SECTION2]
CLE1=string1
CLE2=string2
[SECTION3]
CLE1=string1
CLE2=string2
CLE3=string3
CLE4=string4

On a plusieurs section, et pour chaque section un ensemble de variable.

Seulement deux fonctions sont nécessaires à cette opération.
GetPrivateProfileString, pour récupérer des valeurs.
WritePrivateProfileString, pour sauvegarder des valeurs.

GetPrivateProfileString

DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);

lpAppName [in] : le nom de la section
lpKeyName [in] : le nom de la clé
lpDefault [in] : la valeur à retourner par défaut dans lpReturnedString si la section ou bien la clé n'existe pas
lpReturnedString [out] : la valeur demandée (cette chaîne ne peut pas contenir des caractères de control - code inférieur à 32)
nSize [in] : Taille du buffer lpReturnedString
lpFileName [in] : le nom du fichier d'initialisation

Cette fonction retourne la taille du buffer de sortie.
Si la variable lpAppName est NULL, alors la fonction retourne le nom de toutes les sections dans le buffer de sortie.
Si la variable lpKeyName est NULL, alors la fonction retourne le nom de toutes les variables présentes dans cette section dans le buffer de sortie.

WritePrivateProfileString

BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);

lpAppName [in] : le nom de la section
lpKeyName [in] : le nom de la clé
lpString [in] : la valeur à sauvegarder (le système ne supporte pas l'utilisation du caractères \t-tabulations dans cette chaîne)
lpFileName [in] : le nom du fichier d'initialisation

Si lpFileName ne contient pas un chemin complet, le fichier d'initialisation est cherché dans le répertoire WINDOWS.

Conclusion

Vous pouvez maintenant à votre tour utiliser facilement des fichiers d'initialisation. Pour plus d'informations, consulter la doc en ligne MS : http://msdn.microsoft.com

Pour info, Microsoft conseille d'utiliser les registres plutôt que les fichiers *.ini pour les systèmes 32 Bits

Conclusion :


La source provient du team CodingSkillaz

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
bien...
idée : mettre un lien sur la norme PE

++
Nono.
Messages postés
20
Date d'inscription
jeudi 26 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Yop.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
AMEN !
Messages postés
20
Date d'inscription
jeudi 26 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Voila ce que tu dis: "une API exporte toujours au format C et non C++". Ca c'est entierement faux, une API n'exporte dans aucun format, c'est tout. T'es peut etre pas au courant que les fonctions d'une API sont exportées via une librairie, et sont donc au format PE. Il n'existe absolument aucun "format d'exportation". C de l'invention pure et simple ce que tu dis. Mais bon au lieu de faire de la "decoration" tu ferais peut etre mieux de lire de la doc sur la programmation.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Fonction avec 2 params:
"C" _MaFunc8
"C++" _MaFunc8@xxxxxx
Depuis quand le standard PE imposerait la forme du nom ?
Une prochaine fois tu fais une recherche sur 'decoration' sinon c'est toi qu'il faudra breveter.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_kozy)