Gestionnaire de chemin (path.ini)

Soyez le premier à donner votre avis sur cette source.

Vue 5 163 fois - Téléchargée 373 fois

Description

==============
But du script
==============
Module de gestion des chemins de fichier.
Ce script peut-être ajouté à un onglet d'option pour la gestion des chemins.
Les données se trouvent par défaut dans un fichier path.ini

==============
Utilisation
==============
1- Compilation (du fichier ListEdirot_file.dpr)
2- Mise en place du fichier path.ini dans le même répertoire que l'application [*.exe]
Synthaxe du fichier path.ini
[ Caractère qui défini que le ligne ne doit pas s'afficher
; Caractère de spéaration des colonnes (2 colonnes)
exemple du path.ini
[Structure de chemin;path.ini
Licence;lib\licence.txt
Configuration;lib\conf


==============
Licence
==============
Script Freeware - OpenSource
Auteur: Zechs Merquise :: vivien.steffen@urbanet.ch
Ecrit en Delphi v6 Personnal Edition

Source / Exemple :


unit u_listeditor_file;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ValEdit, StrUtils, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    ValListFiles: TValueListEditor;
    lblInfo1: TLabel;
    MainMenu: TMainMenu;
    mnuFichier: TMenuItem;
    mnuQuitter: TMenuItem;
    mnuAide: TMenuItem;
    mnuApropos: TMenuItem;
    procedure FormCreate(Sender: TObject);
    {const KeyName, KeyValue: String);}
    procedure ValListFilesKeyPress(Sender: TObject; var Key: Char);
    procedure FormResize(Sender: TObject);
    procedure mnuQuitterClick(Sender: TObject);
    procedure mnuAproposClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

  {Variable globale}
  iLine:integer;                                {Compteur de lignes sur total}
  vectStrReserve: array [1..20] of string;      {Vecteur ou l'on place les éléments de reserve}
  iCountReserve: array [1..20] of integer;      {Nombre de reserves}

implementation

uses u_about;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
{Déclaration des variables}
var
        strFilename:string;
        strLine:string;

        iPosChr:integer;        {Position du caractère de séparation}
        strChr:string;          {Caractère de séparation}

        iPosChr2:integer;       {Position du caractère "NE pas inclure" '['}
        strChr2:string;         {Charactère qui spécifie de ne pas repporter la valeur}

        iCountLine:integer;     {Compteur de lignes sur vecteur}

        fFile:textfile;
begin
        {==================== OUVERTURE DU PATH.ini ====================}
        {Initialisation des variables}
        strFilename:= 'path.ini';
        strChr:=';';
        strchr2:='[';

        {Assigner le fichier à ouvrire}
        AssignFile(fFile,strFilename);

        {Accès en lecture seule au fichier}
        FileMode := 0;

        {Ouverture du fichier}
        Reset(fFile);

        {==================== LECTURE DU PATH.ini ====================}
        {Initialisation du nombre de lignes cachées par '['}
        iCountLine:=1;

        while not EOF(fFile) do
        begin
                {Nombre de ligne incrémenté}
                iLine:=iLine+1; {Total de lignes}

                { Assigner à la variable strLine, la ligne en cours }
                readln(fFile,strLine);

                {Initialiser la position du caractère de sépration}
                iPosChr:=pos(strChr,strLine);
                {Control que le séparateur existe}
                if iPosChr > 0 then begin

                        {Exclure les fichiers avec le symbole '['}
                        iPosChr2:=pos(strChr2,strLine);

                        if (iPosChr2<>0) then begin

                                {Reporter la ligne dans un vecteur de reserve}
                                VectStrReserve[iCountLine] := strLine;

                                {Reporter le numéri de ligne dans un vecteur de reserve}
                                iCountReserve[iCountLine] := iLine;
                                
                                
                                {Ajouter 1 au nombre de reserves}
                                iCountLine:=iCountLine+1;
                        end
                        else begin
                                ValListFiles.InsertRow(MidStr(strLine,1,iPosChr-1), MidStr(strLine,iPosChr+1,255),true);
                        end; {Fin du IF iPosChr2>0}
                end; {Fin du IF iPosChr>0}
        end; {Fin du WHILE ...}
        closefile(fFile);

end;

procedure TForm1.ValListFilesKeyPress(Sender: TObject; var Key: Char);
 var
  fFileOutput: textfile;
  strFilename:string;
  strLine:string;
  i:integer;

  iCountRepris:integer; {Nombre de lignes en reserves qui ont été reprises}
begin
        {==================== MODIFICATIONS DU PATH.ini ====================}

        {==================== OUVERTURE DU PATH.ini de sortie ====================}
  {Initialisation des variables}
  strFilename := 'path.ini';

  { Assigner la sortie du path.ini }
  AssignFile(fFileOutput, strFilename);

  {Créer et ouvrire le fichier de sortie}
  rewrite (fFileOutput);

  {Initialisation du compteur de reprise des reserves}
  iCountRepris:=1;

  {==================== DE 1 au nombre de lignes du path.ini originel ====================}
  for i:=1 to iLine do begin;

        {Si le compteur est égal au compteur de reserve}
        if i=iCountReserve[iCountRepris] then begin

                {Ecrire le vecteur strLine de reserve dans le fichier de sortie}

                writeln(fFileOutput, VectStrReserve[iCountRepris]);

                {Incrémenter le nombre de reserves reprises}
                iCountRepris:=iCountRepris+1;

        end
        else begin {Sinon ...}

                {Ecriture des lignes de la liste dans le fichier texte de sortie}
                strLine:=(ValListFiles.Cells[0,i-(iCountRepris-1)]+';'+ValListFiles.Cells[1,i-(iCountRepris-1)]);
                writeln(fFileOutput,strLine);

        end ; {Fin du IF i=iCoutReserve ...}
  end; {Fin du For i:=1 to iLine...}

  CloseFile(fFileOutput);

  {==================== FIN MODIF. DU PATH.ini ====================}

end; {Fin de procedure}

procedure TForm1.FormResize(Sender: TObject);
begin
        ValListFiles.Width := Form1.Width-20;
        ValListFiles.Height:= Form1.Height-85;
end;

procedure TForm1.mnuQuitterClick(Sender: TObject);
begin
        Form1.Close;
end;

procedure TForm1.mnuAproposClick(Sender: TObject);
begin
        AboutBox.showmodal;
end;

end.

Conclusion :


Aucun bug connu jusqu'à ce jour.
Le projet reste dans la version actuelle (sauf si suggestion ou remarque de votre part)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
jeudi 2 mai 2002
Statut
Membre
Dernière intervention
3 mai 2002

Je vais remedier à ceci tout bientôt
héhé, moi qui croyais avoir prévenu tout les bugs j'ai échoué ...

en tout cas, merci pour le tuyaux l'ami.


Au plaisir, Zechs Merquise
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
Il y a un bug si une ligne ne contient pas de ';' alors elle est ignorée et ça plante à la sauvegarde. Il faut mettre le iLine:=iLine+1 après le test "if iPosChr > 0 then begin". Ainsi la ligne est totalement ignorée ( elle sera supprimée à la sauvegarde, mais ça ne plantera pas )
Tu pourrais aussi tester le '[' avant le ';' pour autoriser de mettre des commentaires dans le path.ini sans avoir à ajouter de ';'.

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.