Nettoyage des fichiers ini : version tools

Soyez le premier à donner votre avis sur cette source.

Vue 5 781 fois - Téléchargée 362 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
cs_ezekiel62 Messages postés 10 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 1 décembre 2008
10 juin 2008 à 11:37
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
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004
8 nov. 2002 à 09:56
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.
cs_Cyrille2 Messages postés 113 Date d'inscription vendredi 16 août 2002 Statut Membre Dernière intervention 15 mai 2005
7 nov. 2002 à 21:51
question : pourquoi allourdir son code pour ajouter des espaces dans un ini? on peut s'en passer, non?
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004
6 nov. 2002 à 18:07
Donc ce code est utile. Merci Nebula pour ta remarque.
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
6 nov. 2002 à 16:39
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.