magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
2 août 2005 à 15:03
ces fonctions nous embettaient aussi par leur complexité, (meme si elles sont il est vrai fort simple)
depuis qu'on les a surchargée,
nous n'utilisons plus que leur surcharge d'usage évident....
un set et un get, pour le plus simple...
(Nota: BFichierIni, en ligne sur ce site facilite égalt la gestion de listes, combos....)
Si ça peux t'être utilie à toi aussi....
bool BFichierIni::set(const BString& section, const BString&
key, const BString& file, const BString& message,const bool
warningMeF)
{
///
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// ---------------- BFichierIni::set(const BString& section ,const
BString& key ,const BString& file ,const BString& message
,const bool warningMeF) -> bool ----------------
///
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- Objectif : inscription d'une entrée dans un fichier ini
/// ----- Auteur(s) : Magic_Nono 01/06/01
/// ----- PreCond : /
/// ----- PostCond : /
/// ----- Etat :
2
(-1<0<1<2)
/// ----- MaJ 17/11/04 : prendre en cpte les noms de fichier en absolu
/// ----- MaJ 07/12/04 : vérif ligne seule,
///+ actu : exception
/// ----- MaJ 09/01/05 : trad en \\n si nécessaire... (sachant
que la récup doit en prendre compte!!!) => avec warning éventuel
///
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- const BString& section : section : [..]
/// ----- const BString& key : clef : avt le '='
/// ----- const BString& file : fichier ini
/// ----- const BString& message : valeur : apres le '='
/// ----- const bool warningMeF(par défaut :
'false') : prévenir l'utilisateur en cas de
transformation en ligne (laissé à faux par défaut pour éviter de
perturber les prog préexistants...)
///
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- retour (bool) : succès
///
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- Var : classes externes dont on appelle des méthodes (1) : BVisuel
/// ----- Var Muettes (cf.partie préc) (5) : file ,key ,message ,section ,warningMeF
/// ----- Var Internes à la fonction (5) : bce ,dir ,folder ,message2 ,out
/// ----- Var Utilisées par adresse (2) : dir ,file
/// ----- Var In (5) : file ,key ,message ,section ,warningMeF
BString message2="";
if(message.checkIn("\n"))
{
// PB1("enregistrement d'une multiligne dans un fichier ini!!! NOK");
static bool bce=warningMeF;
if(bce)
BVisuel::informe("attention, votre fichier ini comportera des sections
mises en forme automatiquement (\'\\n\'=>"\\n")");
bce=false;
message2=message.convertTxtMisEnForme(true);
}
char dir[256];
BString folder;
if(file.getLength()<2 || file[1]!=':')
{
GetCurrentDirectory( 256,dir);
folder=dir;
#ifdef _DEBUG_PARAMETER_TO_GET_RID_OF_WIERD_PATH_FROM_VC_
folder+="\\Debug\";
#else /* _DEBUG_PARAMETER_TO_GET_RID_OF_WIERD_PATH_FROM_VC_ */
folder+="\";
#endif /* _DEBUG_PARAMETER_TO_GET_RID_OF_WIERD_PATH_FROM_VC_ */
folder+=file;
}
else
folder=file;
//section, key,string to add, initialization filename
int out;
if(!message2.getLength())
out=WritePrivateProfileString(LPCTSTR(section),LPCTSTR(key),LPCTSTR(message),LPCTSTR(folder));
else
out=WritePrivateProfileString(LPCTSTR(section),LPCTSTR(key),LPCTSTR(message2),LPCTSTR(folder));
return(!out);
}
BString BFichierIni::get(const BString& section, const BString& key, const BString& file,bool avecWarningSiErreur)
{
///
--------------------------------------------------------------------------------------------------------------------------------------------------------
/// ---------------- BFichierIni::get(const BString& section ,const
BString& key ,const BString& file ,bool avecWarningSiErreur)
-> BString ----------------
///
--------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- Objectif : récupération d'une entrée dans un fichier ini
/// ----- Auteur(s) : Magic_Nono 26/04/03
/// ----- PreCond : /
/// ----- PostCond : /
/// ----- Etat :
2
(-1<0<1<2)
/// ----- MaJ 19/04/04 : gestion de lignes plus longues que 256 car...
///
--------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- const BString& section : [section]
/// ----- const BString& key : clef=
/// ----- const BString& file : fichier
/// ----- bool avecWarningSiErreur(par défaut : 'true') : signaler erreur
///
--------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- retour (BString) : valeur
///
--------------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- Var : classes externes dont on appelle des méthodes (1) : BVisuel
/// ----- Var Muettes (cf.partie préc) (4) : avecWarningSiErreur ,file ,key ,section
/// ----- Var Internes à la fonction (7) : answer ,dir ,folder ,i ,out ,rep ,section2
/// ----- Var Utilisées par adresse (3) : answer ,dir ,file
/// ----- Var In (4) : avecWarningSiErreur ,file ,key ,section
/// ----- Var In Globales Constantes (1) : LONGMAXREP
//cout<<"appel getIniFile"<<endl; cout.flush();
//modif cb 17/11/01 pour prendre en cpte les noms de fichier en absolu
char dir[LONGMAXREP];
char answer[LONGMAXREP];
BString folder;
if(file.getLength()<2 || file[1]!=':')
{
GetCurrentDirectory( LONGMAXREP,dir);
folder=dir;
/*#ifdef _DEBUG_PARAMETER_TO_GET_RID_OF_WIERD_PATH_FROM_VC_
folder += "\\Debug\";
#else
*/
folder+="\";
//#endif
folder+=file;
}
else
folder=file;
//section, key, default,
//destination buffer, size of destination buffer,
//initialization filename
BString section2;
section2=section;
GetPrivateProfileString(LPCTSTR(section2),LPCTSTR(key),"default",answer,LONGMAXREP,LPCTSTR(folder));
BString out(answer);
if(out.getLength()==LONGMAXREP-1)
{
//
BVisuel::alerte("la chaîne du .ini est peut-etre
trop longue...");
int i=1;
char*rep;
do
{
i++;
ALLOUEn(rep,char,i*LONGMAXREP+1);
GetPrivateProfileString(LPCTSTR(section2),LPCTSTR(key),"default",rep,LONGMAXREP*i,LPCTSTR(folder));
out=rep;
FREE(rep);
}
while(out.getLength()==(unsigned int)(LONGMAXREP*i-1));
}
if(avecWarningSiErreur && out=="default")
BVisuel::alerte("pb Fichier
"+file+"\nnon présent ou non OK \n lors de la recherche de
["+section2+(BString)"]->"+key);
return out;
}
___________________________________________________________
Magicalement
Nono