Nettoyage des fichiers ini : version tools

Soyez le premier à donner votre avis sur cette source.

Vue 5 385 fois - Téléchargée 332 fois

Description

J'utilise Delphi 5 Entreprise & quand je crée un fichier INI, toutes les sections sont collées l'une contre l'autre. Alors j'ai voulu éclaircir cet affichage en permettant d'insérer soit un saut de ligne avant et/ou après chaque section ( paramètrable ).
Ainsi le fichier INI devient plus propre à l'oeil ( voir la capture ).

Je pense qu'à partir de la version 6 de Delphi, cet affichage est plus clair mais je n'en suis pas sûr.

Source / Exemple :


Dans le zip, vous trouverez une version tools de ce procédé.
Ci-dessous les fonctions & procédures importantes réalisant cet affichage :

//Nettoie un fichier INI
//----------------------
function NettoyerIni(Str:string; Avant:Boolean = True; Apres:Boolean = False;Deb:Boolean = False):string;
var Cpt, Lg_Str:Byte;
    NewStr:string;
begin
     Cpt := 1;
     Lg_Str := LenStr(Str);
     NewStr := '';

     while (Cpt <= Lg_Str) do
     begin
          if (Str[Cpt] = '[') then
          begin
               if (Deb) and (Avant) then
               begin
                    if (Cpt >= 4) then
                    begin
                         if (Str[(Cpt - 4)] <> #13) or (Str[(Cpt - 3)] <> #10) then
                            NewStr := NewStr + #13#10;
                    end
                    else
                        NewStr := NewStr + #13#10;
               end;
               Deb := True;
          end;

          NewStr := NewStr + Str[Cpt];

          if (Str[Cpt] = ']') then
          begin
               if (Apres) then
               begin
                    if (Str[(Cpt + 3)] <> #13) or (Str[(Cpt + 4)] <> #10) then
                       NewStr := NewStr + #13#10;
               end;
          end;

          Cpt := Cpt + 1;
     end;

     Result := NewStr;
end;

function OpenIni(FileName:string):string;
var File_Ini: TextFile;
    Ch:Char;
    Str:string;
begin
     Str := '';
     Assignfile(File_Ini , FileName);
     Reset(File_Ini);
     while not Eof(File_Ini) do
     begin
          Read(File_Ini, Ch);
          Str := Str + Ch;
     end;
     CloseFile(File_ini);

     Result := Str;
end;

procedure SaveIni(FileName, Str:string);
var File_Txt:TextFile;
begin
     AssignFile(File_Txt, Filename);
     ReWrite(File_Txt);
     Write(File_Txt, Str);
     CloseFile(File_Txt);
end;

function LenStr(Str:string):Word;
var Cpt:Word;
begin
     Cpt := 1;

     while (Str[Cpt] <> #0) do
     begin
          Cpt := Cpt + 1;
     end;
     result := Cpt;
end;

Conclusion :


Comme toujours, les remarques suggestions, critiques, ... sont les bienvenues.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
10
Date d'inscription
vendredi 9 mai 2008
Statut
Membre
Dernière intervention
1 décembre 2008

Mettre #13#10 avant le nom de la section ou apres la derniere clé, ça marche aussi...
c'est la méthode que j'utilise lors de la creation de mes *.ini
Messages postés
214
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
14 mai 2004

Oui bien sûr ce code est utile si tu veux lire les fichiers INI dans un bloc-note ou autres, l'affichage est plus agréable plus facile à décortiquer. Inutile si tu veux simplement récupérer leur valeur. Il est rare d'afficher le contenu d'un fichier INI directement mais seulement de récupérer leur valeur donc ce code n'est pas à utiliser en masse. A toi de voir l'utilité que peut t'apporter ce code.
Messages postés
113
Date d'inscription
vendredi 16 août 2002
Statut
Modérateur
Dernière intervention
15 mai 2005

question : pourquoi allourdir son code pour ajouter des espaces dans un ini? on peut s'en passer, non?
Messages postés
214
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
14 mai 2004

Donc ce code est utile. Merci Nebula pour ta remarque.
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Delphi n'y est pour rien, c'est ton système qui gère les INI (en l'occurence, 9x laisse des espaces, NT compacte les codes)... et XP est basé sur NT ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.