Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2975 connectés 

  FORUM HardWare.fr
  Programmation

  [C] Fichier ini

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Fichier ini

n°68213
bkadoum
Posté le 29-10-2001 à 16:01:36  profilanswer
 

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

mood
Publicité
Posté le 29-10-2001 à 16:01:36  profilanswer
 

n°68218
antsite
Je me souviens
Posté le 29-10-2001 à 16:11:27  profilanswer
 

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

n°68224
bkadoum
Posté le 29-10-2001 à 16:28:31  profilanswer
 

ouais je sais mais ils ont pas repondu :)

n°68225
antsite
Je me souviens
Posté le 29-10-2001 à 16:32:42  profilanswer
 

sisi c une fonction du genre WriteConfigFile()

n°68292
LetoII
Le dormeur doit se réveiller
Posté le 29-10-2001 à 21:25:52  profilanswer
 

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 :)) )

n°68304
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-10-2001 à 21:49:51  profilanswer
 

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
n°68309
youdontcar​e
Posté le 29-10-2001 à 21:55:41  profilanswer
 

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 :)

n°68482
LetoII
Le dormeur doit se réveiller
Posté le 30-10-2001 à 14:08:49  profilanswer
 

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

n°68562
bkadoum
Posté le 30-10-2001 à 17:17:23  profilanswer
 

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??

n°68564
El_gringo
Posté le 30-10-2001 à 17:22:34  profilanswer
 

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]

mood
Publicité
Posté le 30-10-2001 à 17:22:34  profilanswer
 

n°68567
bkadoum
Posté le 30-10-2001 à 17:30:05  profilanswer
 

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

n°68568
El_gringo
Posté le 30-10-2001 à 17:36:21  profilanswer
 

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"

n°68569
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-10-2001 à 17:36:33  profilanswer
 

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
n°68589
taureau
Posté le 30-10-2001 à 20:02:47  profilanswer
 

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);

n°69714
Carbon_14
Posté le 05-11-2001 à 15:21:59  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C] Fichier ini

 

Sujets relatifs
Décompiler un fichier vb6 ?Fichier Bitmap et programmation en C...
modification du fichier autoexect.bat sous win 2000?[regexp ?] Récupérer les mails d'un fichier texte ?
C++ Linux, fichier include ?¿[ php ] Creer un fichier a partir d un formulaire
Web : affichage de données extrait d?un fichier genre txt[C++] Recuperer des valeurs depuis un fichier
lien permanent entre un fichier excel et base access ?[PHP] date d'un fichier
Plus de sujets relatifs à : [C] Fichier ini


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR