Nettoyage des fichiers ini : version tools

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

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.