CLASSE DE GESTION DE FICHIER DE TYPE INI (CHARGEMENT/SAUVEGARDE DE FICHIER TEXTE

le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009 - 15 déc. 2005 à 15:53
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014 - 16 sept. 2008 à 20:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35103-classe-de-gestion-de-fichier-de-type-ini-chargement-sauvegarde-de-fichier-texte-contenant-des-sections

shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
16 sept. 2008 à 20:28
Salut, non ce n'est pas prévu, en plus je suis passé au xml, plus souple à gérer ;)
Nerolph Messages postés 58 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 4 septembre 2012
16 sept. 2008 à 18:40
Oups, j'ai oublié de te mettre une note ! ^_^'
Nerolph Messages postés 58 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 4 septembre 2012
16 sept. 2008 à 18:39
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).
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
10 oct. 2006 à 19:44
j'ai fait l'effort de mettre à jour ma source
tu peux la récupérer telle que maintenant
bon courage ;-)
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
9 oct. 2006 à 21:18
Sans cette ligne, le code ne compile pas, de mémoire je crois que ca met ASSERT undefined
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
9 oct. 2006 à 21:09
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*
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
9 oct. 2006 à 15:39
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).
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 oct. 2006 à 15:12
VS n'impose pas cet include ni CString ni quelque autre truc de ce genre, tout est décision du développeur.
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
9 oct. 2006 à 14:03
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.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
26 déc. 2005 à 14:00
"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
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
23 déc. 2005 à 10:15
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...
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
22 déc. 2005 à 20:40
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
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
22 déc. 2005 à 10:02
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...
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
21 déc. 2005 à 19:45
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 ^__^
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 déc. 2005 à 10:01
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...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 déc. 2005 à 09:44
CString est une classe 'chaine' de MFC, pas de Windows.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
20 déc. 2005 à 22:07
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
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
20 déc. 2005 à 10:09
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 !!!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 déc. 2005 à 18:03
Faut dire que la perche était grosse, ne pas l'attraper eût été une insulte.
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
15 déc. 2005 à 17:59
Moi je ne prends rien mal !
C'est bien y'a personne de gentil avec moi :(

Y'a que moi qui me respecte :'(
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
15 déc. 2005 à 17:54
ca c'est parce que tu l'es sans doute !!
HO HO HO!
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
15 déc. 2005 à 16:17
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?" )
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
15 déc. 2005 à 16:16
merci, j'ai compris !
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
15 déc. 2005 à 16:14
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 :)
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
15 déc. 2005 à 15:53
Tu pourrais m'expliquer un peu plus ce que c'est qu'un fichier ini, je comprend pas trop là... (chuis débutant...)