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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Problème de lecture sur fichier ini.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de lecture sur fichier ini.

n°1415241
braoru
Posté le 28-07-2006 à 13:41:34  profilanswer
 

Tout d'abord bonjours.
Alors voila j'ai un problème assez lourd  avec une lecture de fichier ini.
 
Je développe temporaire sur un autre pc que mon poste habituel et je rencontre un problème étrange.
 
J'ai un fichier ini dont je vous donne un extrait (J'ai aussi recréer le bug avec ce raccourcit de fichier ini)
 
Conf.ini
 

Code :
  1. ;------------------------------------------------------------------------
  2. ; Constante divers du programme
  3. ;------------------------------------------------------------------------
  4. [Consente du programme]
  5. ;Nom du domaine conserné
  6. Domaine=cpln.ch
  7. ;Flag d'activation des mot de passe complexe
  8. ;True = Date de naissance comme password False = DefaultPassword
  9. ActiveComplexPassword=True
  10. DefaultPassword=Cpln2007
  11. ;------------------------------------------------------------------------
  12. ;------------------------------------------------------------------------
  13. ;Mapping ecole <-> Stokage des compte utilisateur
  14. ;------------------------------------------------------------------------
  15. [Mapage Ecole <-> Ou de stockage dans AD]
  16. et=OU=ept,OU=eleves_sans_droits,OU=eleves,OU=cpln_users
  17. est=OU=est,OU=etudes_superieures,Ou=eleves,Ou=cpln_users
  18. eam=OU=eam,OU=eleves_sans_droits,Ou=eleves,Ou=cpln_users
  19. esnig=OU=esnig,Ou=etudes_superieures,Ou=eleves,Ou=cpln_users
  20. default=Ecole Invalide
  21. ;------------------------------------------------------------------------


 
Ensuite j'ai les constantes suivantes :
 

Code :
  1. //Constante du programme
  2. Const C_SectionName_ProgConstentes='Constente du programme';
  3. //------------------------------------------------------------------------------
  4. //Paramètre du mode debug du programme
  5. Const C_SectionName_Debug_Information='Configuration du mode debug';
  6. //------------------------------------------------------------------------------
  7. //Mappage entre le nom de l'école et ou seront stocker ses utilisateur dans
  8. //Active directory
  9. Const C_SectionName_UserOuPath='Mapage Ecole <-> Ou de stockage dans AD';
  10. //------------------------------------------------------------------------------


 
 
Lorsque je veux faire des lectures uniquement tous va bien.
 
Hier j'ai rajouté la section suivante.
 

Code :
  1. [Configuration du mode debug]
  2. Debug_EcoleSharePath=\\Dip06Server\Debug\
  3. ;Stokag des utilisateur dans l'ou
  4. Debug_Classe_AD_ElevesPath=OU=debug,OU=eleves,OU=cpln_users
  5. ;groupe global
  6. Classe_AD_GlobalGroupPath=OU=debug,OU=classes,OU=eleves,OU=cpln_users
  7. ;groupe locaux pour le commun
  8. Classe_AD_LocalGroupPath=OU=groupes_debug,OU=groupes_locaux_domaine
  9. ;--------------------------------------------------------


 
Et les constantes

Code :
  1. //Partage correspondant à l'école
  2. Const C_Debug_Balise_Classe_EcoleSharePath='Debug_EcoleSharePath';
  3. //Chemin ou stoker le groupe global d'une classe dans Active directory
  4. Const C_Debug_Balise_Classe_GlobalGroupPath='Debug_Classe_AD_GlobalGroupPath';
  5. //chemin ou stoker le groupe local d'une classe dans active dirextory
  6. Const C_Debug_Balise_Classe_LocalGroupPath='Debug_Classe_AD_LocalGroupPath';
  7. //chemin ou son stoker les élèves en fonction de leur écoles dans active directory
  8. Const C_Debug_Balise_EcoleUserAdPath='Debug_Classe_AD_ElevesPath';
  9. //Paramètre du mode debug du programme
  10. Const C_SectionName_Debug_Information='Configuration du mode debug';

Mon code pour y accéder et le suivant
 

Code :
  1. procedure BuildAndAdd_Debug_Balise(Element:TNodeData);
  2. var
  3.   //fichier ini
  4.   FicIniIn:TMemIniFile;
  5.   //chemain au travers des OU
  6.   OuPath:String;
  7. begin
  8.   //----------------------------------------------------------------------------
  9.   //Balise  Classe_AD_GlobalGroupPath
  10.   //ouvre le fichier Ini
  11.   FicIniIn:=TMemIniFile.Create(Element.IniFile);
  12.   //extrais le chemin dans les ou du groupe global
  13.   OuPath:=FicIniIn.ReadString(C_SectionName_Debug_Information,C_Debug_Balise_Classe_GlobalGroupPath,'00');
  14.   //si pas trouvé
  15.   if OuPath = '00' then
  16.   begin
  17.     //génère une erreur
  18.     raise EU_BuildBaliseFunction_UnfindIniSectionOrRecord.Create
  19.     ('Section ['+C_SectionName_Debug_Information+'] du fichier Ini'+
  20.     ' introuvable ou champ "'+C_Debug_Balise_Classe_GlobalGroupPath+'"non définit');
  21.     //quitte la fonction
  22.     Exit;
  23.   end;
  24.   // Ect…….. Pour les autre section
  25.   //fermeture fichier ini
  26.   FicIniIn.Free;


 
Note :
 
Element.IniFile contient 'conf.ini' à ce moment de l'exécution (vu sur le debugger)
 
Vous l'aurez deviner mon code ne fonctionne pas (la lécture retourne '00')
 
J'ais tenté de remplacé la lecture par  
 

Code :
  1. OuPath:=FicIniIn.ReadString('Configuration du mode debug','Debug_EcoleSharePath','00');


 
Ca ne fonctionne pas non plus
 
J'ais aussi fait des essais sur les autre section (Dans cette partie du code) cela fonctionne correctement
 
Mais par exemple si dans les constante du programme [Consente du programme]
 
je rajoute une entrée
 
Ex :
 
Test=essai1
 
La ligne de code

Code :
  1. OuPath:=FicIniIn.ReadString(C_SectionName_ProgConstentes,'Domaine','00');


Ou la lgine
 

Code :
  1. OuPath:=FicIniIn.ReadString(C_SectionName_ProgConstentes,'DefaultPassword','00');


 
fonctionne parfaitement par contre la ligne
 

Code :
  1. OuPath:=FicIniIn.ReadString(C_SectionName_ProgConstentes,'Test','00');


 
Quand à elle retourne aussi '00'
 
Par contre si je crée un autre projet ou je place le code suivant
 

Code :
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   FicIniIn:TMemIniFile;
  4.   //tampon de chaines
  5.   Str:TStringList;
  6.   //tampon pour une chaine
  7.   StrValue:String;
  8. begin
  9.   //creation du tempon de chaine   
  10.   Str:=TStringList.Create;
  11.   //ouverture du fichier ini et chargement en mémoire
  12.   FicIniIn:=TMemIniFile.Create('conf.ini');
  13.   //lectures de la section
  14.   FicIniIn.ReadSectionValues('Configuration du mode debug',Str);
  15.   ListBox1.Items:=Str;
  16.   //charge une clé  
  17.   StrValue:=FicIniIn.ReadString('Configuration du mode debug','Debug_EcoleSharePath','00');
  18.   Str.Add(StrValue);
  19.   //ajoute le tampon de chaine à la listbox
  20.   ListBox1.Items:=Str;
  21.   Str.free;
  22.   FicIniIn.free;
  23. end;


 
Ici la lecture ce passe sans encontre.
J'ais essayer de reprendre ce fichier de configuration et d'ouvrir le fichier ini avec  
 

Code :
  1. FicIniIn:=TMemIniFile.Create('conf.ini');


 
Dans le programme principale rien a faire il continue de lire et de retourner des '00''
 
Alor la je vois pas surtouts que dans mon programme toute les autre lectures dans d'autres procédures fonctionne parfaitement (je travail avec 15 sections) sauf pour cette section ou toute autre chose que j'écris (via notepade) sur ce pc dans d'autre section. Mais ces même ajout dans le fichier son parfaitement lisible dans un autre projet par contre (Comme le projet de test).
 
J'ai essayer de refaire un projet complet mais le problème étais le même au bout du compte.
 
Alors si des personnes avec une idée cela serai véritablement sympathique.
 
Note à moi-même :  
 Les noms  de section dans un fichier ini sont en majuscule et je doit le changer je me rend compte la maintenant.
 
No comment  


---------------
Braoru
mood
Publicité
Posté le 28-07-2006 à 13:41:34  profilanswer
 

n°1415248
_darkalt3_
Proctopathe
Posté le 28-07-2006 à 13:47:10  profilanswer
 

Tu sais qu'il y a des primitives windows pour lire les fichiers ini ?

n°1415252
braoru
Posté le 28-07-2006 à 13:51:28  profilanswer
 

Non mais je n'ai jamais été contre des compléments d'information par contre alors c'est bien volontiers que j'accepterai une description. Si cela ne te dérange pas bien sure.


---------------
Braoru
n°1415254
_darkalt3_
Proctopathe
Posté le 28-07-2006 à 13:53:58  profilanswer
 
n°1415255
braoru
Posté le 28-07-2006 à 13:56:58  profilanswer
 

Si par la tu voulais savoir si j'avais inclus correctement les bon uses j'ai bien inclus IniFiles.
J'ais fais le choix de TMemIniFile care fait beaucoup de lecture mais jamais d'écriture sur mon fichier ini.


---------------
Braoru
n°1415338
braoru
Posté le 28-07-2006 à 15:31:54  profilanswer
 

Problème résolut après 3 jours.
 
J'avais renommé le répertoire de mon groupe de projet  Back_25_07_06_CCI. Et copier son contenu dans un nouveau répertoire CCI.
 
Enfaite mon application travail avec ca racine comme source de son arborescence de fichier. L'application utilisait les fichiers qui ce trouvait dans le répertoire de backup et non dans le nouveau répertoire de travail. Il semblerai qu'il n'aille pris en compte le changement de répertoire mais pas de la bonne manière.
 
3 claques pour moi.
 
Je travail sur partage windows sur ma machine. Tous les 4 jours mon server ouvre et sauvegarde tous ce qui commence par Back_ . Donc je vais changer ma méthode car renommer le répertoire puis copier ne semble pas être une bonne solution pour Delphi.


---------------
Braoru

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

  Problème de lecture sur fichier ini.

 

Sujets relatifs
probleme de lecture/ecriture dans un fichier excelproblème de lecture d'un fichier en cobol
Probleme d'exception pour lecture fichierProblème de lecture de fichier
[java][Resolu] Probleme lecture de fichierProblème de noob ecriture/lecture fichier texte
probleme de lecture fichierprobleme de newbie vis a vis de la lecture d un fichier txt....
Problème d'ancodage lors de lecture dans un fichierproblème de lecture de fichier texte
Plus de sujets relatifs à : Problème de lecture sur fichier ini.


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