Convertisseur de fichier type "tree >> nomfichier.txt"

Contenu du snippet

Ceux qui ont deja tapé dans l'invite de commande un
tree >> repertoire.txt
savent que le fichier est difficilement lisible par la suite, car plein de caracteres bizarres en lieu et place des arborescences.
Cette source va ouvrir le fichier et remplacer tous les caracteres "genants" par des caracteres plus faciles a lire...

Personellement, je l'utilise pour maintenir "a jour" la liste de mes albums.

Source / Exemple :


unit fiche_principale;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    lister: TButton;
    emplacement: TEdit;
    listing: TMemo;
    procedure listerClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.listerClick(Sender: TObject);
var
Fichier : textfile;
buf : string;
i : integer; // lecture des caracteres  
r: TRect; //pour l'impression
i: Integer;
begin

// Teste si le fichier existe, sinon on sort
if not FileExists(emplacement.Text) then
begin
ShowMessage('Le fichier que vous avez demandé n''existe pas!');
Exit; 
end;

// Affectation de la variable Fichier au fichier
AssignFile(Fichier, emplacement.Text);

// Ouverture en mode lecture
Reset(Fichier);

// On lit ligne à ligne et affiche ce qui est lu
while not Eof(Fichier) do 
begin 
Readln(fichier, buf);

for i := 1 to Length(buf) do
begin
if buf[i] = '³' then listing.Text := Listing.Text+'|' else
if buf[i] = 'Ã' then listing.Text := Listing.Text+'>' else
if buf[i] = 'Ä' then listing.Text := Listing.Text+'-' else
if buf[i] = 'À' then listing.Text := Listing.Text+'+' else

//tous ces caracteres sont ceux de l'arborescence

listing.Text := listing.Text+buf[i]; 
//si le caractere n'est pas un caractere d'arborescence, on ajoute juste le caractere normal 
end;

listing.Lines.Add(''); // ensuite on saute une ligne

end;

// Fermeture du fichier
CloseFile(fichier);

  with Printer do
    begin
      r := Rect(100,100,(Pagewidth - 100),(PageHeight - 100));
      BeginDoc;
      Canvas.Brush.Style := bsClear;
      for j := 0 to Memo1.Lines.Count do
       Canvas.TextOut(100,100 + (j *
                   Canvas.TextHeight(listing.Lines.Strings[j])),
                   listing.Lines.Strings[j]);

      Canvas.Brush.Color := clBlack;
      Canvas.FrameRect(r);
      EndDoc;
    end;

end;

end.

Conclusion :


Voila...
Je suis en train de voir un moyen de lire les infos a partir d'un fichier .ini mais ce n'est pas extremement nescessaire.. .Donc a moins que vous ne me harceliez jour et nuit, je ne vais pas trop me presser pour le mettre au point :p

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.