begin process at 2010 02 09 21:34:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > CLASSE DE GESTION DE FICHIER DE TYPE INI (CHARGEMENT/SAUVEGARDE DE FICHIER TEXTE CONTENANT DES SECTIONS)

CLASSE DE GESTION DE FICHIER DE TYPE INI (CHARGEMENT/SAUVEGARDE DE FICHIER TEXTE CONTENANT DES SECTIONS)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Classé sous :ini Niveau :Débutant Date de création :15/12/2005 Date de mise à jour :10/10/2006 19:42:01 Vu / téléchargé :6 189 / 834

Auteur : shenron666

Ecrire un message privé
Site perso
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note

 Description

Pour être bref, un fichier INI est un fichier texte contenant des sections dont le libellé est entre crochets []
dans chaque section vous avec des paires clef = valeur
chaque section est unique (la casse est respectée)
chaque clef est unique dans une même section

La classe CINI_File sert à gérer un fichier INI existant ou à créer
Elle permet de charger et de sauvegarder des données comme on les trouve dans les fichiers INI
- CreateSection sert à créer une section ou à en récupérer une existante (retourne un pointeur sur CINI_Section)
- LookupSection permet de savoir si une section existe et de récupérer le pointeur sur celle-ci
- GetSectionsCount permet de savoir combien on a de sections
- GetSectionAt permet de parcourir les sections dans l'ordre
les sections ajoutées le sont dans un ordre qui est conservé

La classe CINI_Section gère une section
Elle mémorise chaque clef et la valeur qui lui est associée en conservant l'ordre dans lequel elles ont été transmises
- SetKey permet d'ajouter une clef et sa valeur ou de modifier la valeur d'une clef existante
- LookupKey permet de connaitre l'existance d'une clef et de récupérer sa valeur
- GetKeysCount renvoie le nombre de clefs dans la section
- GetKeyAt permet de parcourir les clefs dans l'ordre
les clefs ajoutées le sont dans un ordre qui est conservé

Le code est commenté et compatible avec DOxygen pour la génération automatique d'une doc


 Conclusion

Je n'ai pas mis de méthode de modification de l'ordre des clefs ou des sections vu que je n'en avais pas besoin
Le code utilise la STL et ne comporte pas de bug connu
Si malgrès tout vous rencontrez un soucis n'hésitez pas à m'en faire part

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

10 octobre 2006 19:42:01 :
j'avais laissé trainer quelque bribes de code Win32 et MFC, ils sont supprimés cela évitera à certaines personnes de grands efforts de compréhension de la source pour l'adapter à leurs besoins, le copier/coller ne devrait plus poser de problème désormais ;-)

 Sources du même auteur

CSORTEDARRAY<TEMPLATE> VISUAL C++ MFC
Source avec Zip Source avec une capture EXTRACTEUR / ANALYSEUR DE COMBOS (MFC)
Source avec Zip Source avec une capture OMBRES VOLUMÉTRIQUES D'OBJETS 3D EN UTILISANT LE STENCIL (C+...
Source avec Zip Source avec une capture VIEWER 3D ET GÉNÉRATEUR 2D WIN32 OPENGL VC++7
Source avec Zip Source avec une capture OMBRE PORTÉE ET UTILISATION STENCIL SOUS OPENGL

 Sources de la même categorie

Source avec Zip Source avec une capture ID3 TAG COVER ALBUM IMAGE par nanonavich
FILEREADER par FrancoisGauthier
Source avec Zip CLASSE AVANCÉE DE LOG, THREAD SAFE ET DIVERSES SURCHARGES par sboli
Source avec Zip Source avec une capture Source .NET (Dotnet) INFILESEEKER par swonder
Source avec Zip Source avec une capture USB DETECTION par abandonware

 Sources en rapport avec celle ci

UTILISER L'API INI DE LA LIBCX par cogniaux
Source avec Zip GESTION DE FICHIER INI : DONNEE, LISTE & COMBOBOX - BFICHIER... par magic_Nono
PDC32: VOICI UNE DLL QUI PERMET DE LIRE DES FICHIERS DE CONF... par KyoKo
ECRIRE/LIRE UN FICHIER *.INI EN C/C++ par kozy
ECRIRE/LIRE DANS UN FICHIER INI par LallThis

Commentaires et avis

Commentaire de le_duche le 15/12/2005 15:53:26

Tu pourrais m'expliquer un peu plus ce que c'est qu'un fichier ini, je comprend pas trop là... (chuis débutant...)

Commentaire de Joky le 15/12/2005 16:14:23

exemple

[Position]
x=120
y=90
cx=50
cy=50

si tu veux conservé les coordonnées de ton application, tu charges tu récupères et tu t'amuses :)

Commentaire de le_duche le 15/12/2005 16:16:39

merci, j'ai compris !

Commentaire de le_duche le 15/12/2005 16:17:42

heu... ca pourrait etre mal pris, mais c'est un vrai merci ! et j'ai vraiment compris ! :D

(on pouvait prendre ca pour "tu me prend pour un con?" )

Commentaire de cosmobob le 15/12/2005 17:54:23

ca c'est parce que tu l'es sans doute !!
HO HO HO!

Commentaire de Joky le 15/12/2005 17:59:46

Moi je ne prends rien mal !
C'est bien y'a personne de gentil avec moi :(

Y'a que moi qui me respecte :'(

Commentaire de BruNews le 15/12/2005 18:03:34 administrateur CS

Faut dire que la perche était grosse, ne pas l'attraper eût été une insulte.

Commentaire de KeniiyK le 20/12/2005 10:09:42

Salut, je viens de jeter un coup d'oeil vite fait...
Juste un truc, en comparaison avec la fonction de Windows GetPrivateProfileString :
- Le Trim est effectué sur les noms de section aussi.
- La recherche n'est pas case-sensitive pour les sections et les clés.


Sinon merci pour la source !!!

Commentaire de shenron666 le 20/12/2005 22:07:49

GetPrivateProfileString est une fonction de windows, si je n'ai pas utilisé de CString ou autre fonction windows c'est pour pouvoir utiliser cette classe où l'on veux, je préfère une classe portable

Concernant la recherche pour les sections et les clefs, elle EST case-sensitive, la clef "Params" et la clef "PARAMS" sont 2 clefs différentes

Commentaire de BruNews le 21/12/2005 09:44:30 administrateur CS

CString est une classe 'chaine' de MFC, pas de Windows.

Commentaire de KeniiyK le 21/12/2005 10:01:53

Shenron666, je pense que tu as survolé mon message plutot que de le lire... Je faisais juste une comparaison avec quelque chose qui existe déjà. OUI ta recherche est case-sensitive, PAS dans GetPrivateProfileString. L'histoire du Trim, etc...

Commentaire de shenron666 le 21/12/2005 19:45:29

KeniiyK > Désolé et merci pour ces précisions, j'ai effectivement mal compris ton message
- pour le Trim sur les noms de section j'ai hésité dans le sens où ils sont encapsulés entre crochets, mais c'est facile à modifier pour qui veut l'ajouter et en fait en y repensant je le ferai peut-etre vu que je trouve cela plus logique maintenant lol
- pour la recherche case-sensitive c'est plutot logique qu'elle ne le soit pas en fait, c'est une question de goût, il faut que je regarde comment faire

BruNews, de mon point de vue, les MFC c'est du windows, et donc par "windows" je voulais juste dire que je préférais utiliser des méthodes standards plutot que propriétaires (MFC ou Win32 comme GetPrivateProfileString)
note : j'aurai dû mettre "windows" entre guillemets ^__^

Commentaire de KeniiyK le 22/12/2005 10:02:50

Une idée d'évolution serai de pouvoir récupérer des tableaux. Par exemple si je veux retrouver mes tableaux
X[2]={0.2,0.3} et Y[2]={1.2,1.6} dans un fichier INI a l'heure actuelle, 2 solutions :
- jouer sur les valeurs de sections :
[Position0]
x=0.2
y=1.2
[Position1]
x=0.3
y=1.6
- jouer sur les valeurs des clés :
[Position]
x0=0.2
y0=1.2
x1=0.3
y1=1.6
Ces deux solutions sont super lourdes a mon gout !!!

Par contre une solution du style :
[Position]
x=0.2,0.3
y=1.2,1.6
est assez efficace je trouve... De plus on peut toujours lire les anciens format (cle -> une seule valeur).

Voire meme avoir des sections a l'interieur d'autre sections.... (genre XML)

Peut etre que si j'ai le temps...

Commentaire de shenron666 le 22/12/2005 20:40:29

A partir du moment où les clefs et les valeurs sont des chaines de caractères, tu peux mettre ce que tu veux, par exemple avec :
Y = 1.2, 1.6
tu auras la valeur :
1.2, 1.6
tu es seencé savoir que ta clef contient plusieurs valeurs, tu cherches la (les) virgule(s) et extrait les valeurs
c'est ce que je fais dans mon appli

Commentaire de KeniiyK le 23/12/2005 10:15:51

Oui on peut faire comme ça, mais d'un point de vue conception... c'est pas le top. Ce que je veux dire c'est qu'ayant écris un module "Chargement de fichier INI", c'est à lui de renvoyer un tableau et non pas a un autre de transformer ce qu'il renvoie (une string ici) en tableau...

Commentaire de shenron666 le 26/12/2005 14:00:32

"d'un point de vue conception... c'est pas le top"
C'est là que tu fais erreur, la classe que j'ai créée est une classe générique, tu peux ajouter des méthodes si tu veux mais si les clefs et les valeurs sont des string c'est parceque tu peux y mettre ce que tu veux tandis que dans un int tu ne peux mettre qu'une valeur numérique...
à toi de te servir de cette classe, de la dériver ou de la compléter si tu veux mais le principe d'un fichier ini c'est "1 clef = 1 valeur" après ce que tu fais de la valeur...
si tu cherches une clef tu es sencé savoir quel type de valeur y est rattaché donc de mon point de vue: non, ce n'est pas à la classe de chargement de fichier ini de te renvoyer un tableau

Commentaire de turnerom le 09/10/2006 14:03:46

Commentaire de : shenron666 le 20/12/2005 :
GetPrivateProfileString est une fonction de windows, si je n'ai pas utilisé de CString ou autre fonction windows c'est pour pouvoir utiliser cette classe où l'on veux, je préfère une classe portable

C'est pour ca qu'il a cette ligne dans ton code :
#include "StdAfx.h" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ah visual quand tu nous tiens.

Commentaire de BruNews le 09/10/2006 15:12:46 administrateur CS

VS n'impose pas cet include ni CString ni quelque autre truc de ce genre, tout est décision du développeur.

Commentaire de turnerom le 09/10/2006 15:39:56

Oui, mais quand on dit, qu'on fait du code portable et qu'on utilise des includes spécifiques à visual, ca me faire rire (jaune).

Commentaire de shenron666 le 09/10/2006 21:09:06

j'utilise la source dans mes projets MFC (au boulot entre autres)
la ligne n'est là que pour définir l'utilisation d'entête précompilée si chère à Visual
tu peux supprimer la ligne, elle n'a aucune incidence sur le code
et sinon, je préfère le bleu ;-) *rire bleu*

Commentaire de turnerom le 09/10/2006 21:18:42

Sans cette ligne, le code ne compile pas, de mémoire je crois que ca met ASSERT undefined

Commentaire de shenron666 le 10/10/2006 19:44:01

j'ai fait l'effort de mettre à jour ma source
tu peux la récupérer telle que maintenant
bon courage ;-)

Commentaire de Nerolph le 16/09/2008 18:39:49

Est-ce que la gestion de plusieurs clés de même nom sera prévue ?
Exemple d'un tel fichier .ini : php.ini (pour l'activation des extensions).

Commentaire de Nerolph le 16/09/2008 18:40:51 8/10

Oups, j'ai oublié de te mettre une note !  ^_^'

Commentaire de shenron666 le 16/09/2008 20:28:54

Salut, non ce n'est pas prévu, en plus je suis passé au xml, plus souple à gérer ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Probleme sur une methode [ par kild ] Bonjourje desire crée un exe ki execute via le choix de l'utilisateur un autre executable dont g po les sources et ki utilise des commandes en ligne d Lecture/écriture de fichier .INI sous Unix? [ par Samprayoga ] Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme Fichier INI [ par Xs ] voila, j'utilise la fonction API WritePrivateProfileSetting(....)mais il se trouve que le fichier ini est crée dans le repertoire windows. moi, je veu VB et DLL [ par jcharles ] Que je vous explique !J'ai effectué un Traducteur Francais&lt;=&gt;Anglais sous VB avec l'acces a un fichier DICO1.INICe fichier DICO1.INI contient le GetPrivateProfileString ??? [ par brodeur ] Bonjour, est-ce que quelqu'un pourrait me dire si la fonction GetPrivateProfileString( .... ) peut etre utilisé pour tout les types de fichier text av Lire un INI en Turbo C++/dos [ par Alextophi ] Comment puis-je lire un fichier INI sous dos en C++ avec Turbo C++.[SECTION1]x = data[SECTION2]x = dataetc.d'avance Mercichristophe lecture/écriture des fichier .ini sous UNIX/Windows [ par MELISA ] Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme service NT ou 2000 [ par arofred ] Bonjour,J'ai un service nt écrit en visual C++ version 6.0,ce service est lié a un fichier .INI qui ce trouve dans c:\winnt\system32.Je voudrais pouvo recuperation de données et fichier .ini! [ par boulaxx ] bonjour!j'ai pls questions: - je voudrais recuperer les données qui st contenues ds les champs de ma boite de dialogue... - p tjs.ini [ par boulaxx ] encore une question!cette fois ci, je voudrais charger les valeurs contenues ds le .ini ds mon interface graphique. j'ai essayé de les recuperer ac Ge


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales