begin process at 2012 05 29 04:30:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

fichiers .ini ?? - api windows


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fichiers .ini ?? - api windows

lundi 1 août 2005 à 17:43:51 | fichiers .ini ?? - api windows

banane_rose

comment ça marche cette bête ?
j'y comprend pas grand chose .
même le truc le plus facile ça marche pas :
WritePrivateProfileString( "My_Option","My_Key","My_Add","My_file.ini" );
MSDN dit à propos de ce truc : "This function is provided only for compatibility with 16-bit versions of Windows. Applications should store initialization information in the registry."
ça veut dire quoi ça "16-bits" ??
bref éclairez moi un peu sur les fichiers .ini

thx


Dorian / 14 ans / sous Dev-C++

I always need help ... . . .  . .  .   .   .   .
lundi 1 août 2005 à 18:13:29 | Re : fichiers .ini ?? - api windows

meech

Membre Club

Salut,

En gros, ça veut dire que c'est une routine maintenue uniquement pour faire tourner les applications initialement prévues pour un système d'exploitation 16 bits (avant Windows 95, il me semble) sur des systèmes plus modernes.

Bien évidemment, cette histoire de 16 ou 32 bits est directement correllée avec le matériel sur lequel tourne le système d'exploitation (relatif à l'espace mémoire que peut gérer le système).

Microsoft conseille de stocker les informations relatives à un profil utilisateur dans la base de registres (et donc, d'utiliser les API associées) au leiu de les enregistrer dans un fichier *.ini

Tout dépend de ce que tu souhaites faire...


A plus tard.

lundi 1 août 2005 à 20:18:53 | Re : fichiers .ini ?? - api windows

banane_rose

bon à part ça ... vous connaissez pas un methode pour écrire dans des fichiers ini efficace et qui marche (surtout ça!) ?


Dorian / 14 ans / sous Dev-C++

I always need help ... . . .  . .  .   .   .   .
lundi 1 août 2005 à 20:56:21 | Re : fichiers .ini ?? - api windows

meech

Membre Club
Il me semble qu'il existe un composant de Microsoft pour faire cela, mais je n'ai pas réussi à remettre la main dessus.
CodeGuru.com propose ici une classe en C++ efficiente.

A plus tard.

PS. Je cherche quand même pour la classe de Microsoft.



lundi 1 août 2005 à 21:29:13 | Re : fichiers .ini ?? - api windows

banane_rose

merci pour ton aide


Dorian / 14 ans / sous Dev-C++

I always need help ... . . .  . .  .   .   .   .
lundi 1 août 2005 à 22:10:18 | Re : fichiers .ini ?? - api windows

aardman

Membre Club
Réponse acceptée !
Salut,
Ben les apis du genre WritePrivateProfileString() marchent bien.
mardi 2 août 2005 à 11:58:30 | Re : fichiers .ini ?? - api windows

LordBob

Membre Club
et pi tu trouveras sur le site, de nombreux exemple de WritePrivateProfileString() et GetPrivateProfileString() sur le site !
Bob...

"La chance accorde ses faveur aux esprits avertis..."
mardi 2 août 2005 à 15:03:07 | Re : fichiers .ini ?? - api windows

magic_Nono

Membre Club
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
mardi 2 août 2005 à 16:22:07 | Re : fichiers .ini ?? - api windows

aardman

Membre Club
Salut,
WritePrivateProfileString() compliqué ? faut pas abuser quand meme..
Y'a 4 params qui sont évidents: nom du fichier ini, nom de la section, non de la clé, valeur de la clé.

mardi 2 août 2005 à 16:57:51 | Re : fichiers .ini ?? - api windows

magic_Nono

Membre Club
oui,
ceci dit, la gestion des retours chariot
n'étant pas std, par ex, nous avons gagné à utilisé cette lib car l'update n'a nécessité qu'une recompilation.

de plus, on standardise bcp plus facilement ainsi la gestion d'erreurs

exemples parmi tant d'autres des avantages à surcharger les fonctions std selon leur utilisation
___________________________________________________________
Magicalement
Nono

1 2

Cette discussion est classée dans : ini, windows, fichiers, api, my


Répondre à ce message

Sujets en rapport avec ce message

Fichiers en ressources - API Windows [ par banane_rose ] salut voilà je voudrais savoir comment mettre des fichiers en ressources du programmes puis après pouvoir les enregistrer après (dialog enregistrer s statusbar + icône - API Windows [ par banane_rose ] voilà j'ai réussis à faire une statusbar avec une icône mais le problème c'est que l'icône à une grosse taille (32 x 32) j'ai pourtant essayé avec une Comment faire pour détécter changement de minute ? - API Windows [ par banane_rose ] salut ! est-ce que y'a quelque chose pour détécter le changement de minute ? thxDorian / 14 ans / sous Dev-C++ <b Icônes perso dans une toolbar - API Windows [ par banane_rose ] Salut SVP aidez moi , je suis paumé là . C'est dans le titre .Dorian / 14 ans / sous Dev-C++ Selection dans listview - API Windows [ par banane_rose ] salut. voilà , je trouve pas comment séléctionner un élément dans une listview , ni comment savoir si y'a des items séléctionnés et combien .<font co Question sur edit - API Windows [ par banane_rose ] salut j'ai juste une 'tite question : comment savoir quand un edit est modifié (son texte) ?Dorian / 14 ans / sous Dev-C++ <font colo Focus - API Windows [ par banane_rose ] salut, voilà je n'arrive pas à trouver des infos pour l'utilisation du focus . - la touche entrée pour valider (grosse bordure) ex: - contour e API windows et manipulation d'images [ par cienfuegos ] Salut, Je cherche un tutorial qui regroupe toutes les infos (fonctions) nécessaires à la manipulation  des images avec l'API  windows.(Affichage, red API Windows - Problème Dialog [ par banane_rose ] salut, dans mon template de ma dialog quand je rajoute la ligne pour les styles STYLE DS_MODALFRAME | WS_POPUP ça me met [Res


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,061 sec (4)

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