[C] Fichier ini

Fichier ini [C] - Programmation

Marsh Posté le 29-10-2001 à 16:01:36    

J'ai un programme où j'aimerai initializer mes variables via un fichier texte, dois-je utiliser un fichier ini? Comment on fait?

Reply

Marsh Posté le 29-10-2001 à 16:01:36   

Reply

Marsh Posté le 29-10-2001 à 16:11:27    

y a déjà eu un post je crois, fais une recherche

Reply

Marsh Posté le 29-10-2001 à 16:28:31    

ouais je sais mais ils ont pas repondu :)

Reply

Marsh Posté le 29-10-2001 à 16:32:42    

sisi c une fonction du genre WriteConfigFile()

Reply

Marsh Posté le 29-10-2001 à 21:25:52    

T'es pas forcé d'utiliser un fichier ini pour le faire, tu peux aussi écrire directement tes données en binaire dans un fichier, il suffit que tu sache l'ordre et le type de tes variables pour les récupérer aprés au lencement de ton prog (via une fonction que tu crée) mais bon c pas géniale quand tu veux modifier les valeures dans le fichier à la main (faut avoir un éditeur exa et bien savoir compter en base 16 :)) )

Reply

Marsh Posté le 29-10-2001 à 21:49:51    

pour le fichier binaire, tu fous tes parametres dans une structure, comme ça tu lis ou écrit ta structure dans le fichier.
C'est le plus facile si tu n'es pas sous Windows.
Avec Borland C++Builder y a le TIniFile.
Sinon dans l'API Windows y a des fonctions C, comme dit plus haut.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 29-10-2001 à 21:55:41    

LetoII a écrit a écrit :

T'es pas forcé d'utiliser un fichier ini pour le faire, tu peux aussi écrire directement tes données en binaire dans un fichier, il suffit que tu sache l'ordre et le type de tes variables pour les récupérer aprés au lencement de ton prog (via une fonction que tu crée) mais bon c pas géniale quand tu veux modifier les valeures dans le fichier à la main (faut avoir un éditeur exa et bien savoir compter en base 16 :)) )  



même si tu veux empêcher l'utilisateur de trifouiller les paramètres, c'est le truc à ne jamais faire. si tu sauves un fichier binaire, il faut absolument sauver le nom de tes variables avec et s'en servir à la relecture. sinon à la prochaine version de ton soft, bon courage pour tout relire dans le bon ordre, traiter les nouvelles variables, les obsolètes, etc.
 
le plus simple reste un fichier .ini (y'a des fonctions win32 pour, regarder du côté de WritePrivateProfileString()) ... ou xml pour les fans :)

Reply

Marsh Posté le 30-10-2001 à 14:08:49    

Dans ce cas tu inclue un numero de verssion et tu charge le DLL qui convient au début de ton aplli :)

Reply

Marsh Posté le 30-10-2001 à 17:17:23    

Putain qu'c'est chiant ces fonctions windows ca marche jamais du premier coup!
 
voila j'appel cette fameuse fonction:
 
GetPrivateProfileString("general", "pathname", "Error", buffer, 255, "config.ini" );
 
Voici mon fichier config.ini, il se trouve dans le même répertoire que mon programme:
 
[general]
pathname=files/
 
Pourquoi buffer prend la valeur par défault quand même??

Reply

Marsh Posté le 30-10-2001 à 17:22:34    

moi je sais...:D
enfin, je pense...
buffer, tu l'as déclaré comment ?
 
si tu l'as déclaré comme char* ou comme LPSTR, c normal que ça marche pas... y faut réverver l'espace mémoire.

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

Reply

Marsh Posté le 30-10-2001 à 17:22:34   

Reply

Marsh Posté le 30-10-2001 à 17:30:05    

J'ai déclaré buffer commme ca:
 
char *buffer;
buffer = new char[255];
 
Mais je viens de trouver, en fait il faut donner le chemin complet pour accéder au .ini! Je me demande pourquoi car normalement il lit les fichier depuis la racine du programme

Reply

Marsh Posté le 30-10-2001 à 17:36:21    

non, il lit pas les fichiers depuis la racine d programme... je sais pas d'ou tu sors ça... lit la doc sur la fonction WritePrivateProfileString, et autres, ...si tu veux qu'il lise à la racine de ton prog, comment chemin, mets ".\FicIni.ini"

Reply

Marsh Posté le 30-10-2001 à 17:36:33    

il prend le repertoire courant; et sous Win98, ME, NT4, 2K et XP ce n'est pas le répertoire du programme, c'est "Mes documents" ou le dernier dossier utilisé.
Il n'y a que sous Win95, 3.x et DOS que c'était le répertoire du prog.
D'où l'intérêt de Application.ExeName de C++Builder/Delphi, mais j'ai jamais trouvé l'équivalent en MFC :(
Y a bien le premier param du main(arc, argv) qui contient le nom du prog, mais je sais pas si y a le chemin complet.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-10-2001 à 20:02:47    

oui tu y as le chemin complet, c'est d'ailleur comme cela que application.exename est correctement renseignée, en fait Application.exename se contente de faire un appel à ParamStr(0);

Reply

Marsh Posté le 05-11-2001 à 15:21:59    

Pour mettre le fichier INI dans le même répertoire que l'EXE, j'utilise
    char *ChINI;
 
    LngChnNom = 255;
    if ((ChINI = (char *)malloc(LngChnNom + 1)) == NULL)
    {
      LastError = ERR_ALOC;
      return;
    }
    {
//  Cherche le path pour pas encombrer répertoire Windows avec INI
      int  Long;
      char *ptr;
      GetModuleFileName(hInst, ChINI, LngChnNom);
      ptr = strrchr(ChINI, '.';);
      Long = (int)(ptr - ChINI);
      ChINI[Long] = '\0';
      strcat(ChINI, ".INI" ); // AJOUTE INI AU NOM DE L'APPLICATION
    }
Ca marche sous Win 3.11 et 95/98/NT.
hInst est l'instance du prog.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed