begin process at 2010 02 10 02:03:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CONVERTISSEUR DE FICHIER TYPE "TREE >> NOMFICHIER.TXT"

CONVERTISSEUR DE FICHIER TYPE "TREE >> NOMFICHIER.TXT"


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :21/03/2005 Date de mise à jour :21/03/2005 19:51:42 Vu :4 621

Auteur : Dreuteu

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

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

  • 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.
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


 Historique

21 mars 2005 19:51:42 :
Mise a jour: le listing est imprimé apres la conversion.

 Sources du même auteur

CRÉATION D'UN CHECKSUM DE BASE
Source avec Zip MODIFIER LE BG DE LA LISTE DE CONTACT DE MSN MESSENGER (BETA...
Source avec Zip ENVOI DE MAIL EN MASQUANT SON ADRESSE
Source avec Zip Source avec une capture CONVERSION D'ADN
CALCUL DE FACTORIELLE

 Sources de la même categorie

Source avec Zip SAUVEGARDE DE PLUSIEURS DISQUES/PARTITIONS par danfranjo
Source avec Zip Source avec une capture FICLOCK : LOCKEZ LES FICHIERS par JulioDelphi
Source avec Zip Source avec une capture MODIFICATION DES EXTENSIONS DE FICHIERS par JeremyLecouvert
EXPLORATION RÉCURSIVE DE RÉPERTOIRE par JeremyLecouvert
Source avec Zip OBTENIR LE PROPRIÉTAIRE D'UN FICHIER (WIN32;NTFS) par ILP

Commentaires et avis

Commentaire de Dreuteu le 21/03/2005 18:36:16

Je commente de suite...

Je n'ai pas choisi de mettre un systeme d'enregistrement en place parce que dans mon utilisation perso ca n'est pas nescessaire. Mais il est tout a fait possible de le faire .

D'un autre cote, on peut s'en servir pour verifier la creation/disparition de repertoires... Dans ce cas, un enregistrement serait nescessaire.

Commentaire de Debiars le 21/03/2005 20:21:50

Salut,
Te fatigue pas avec les fichiers .ini, tu peux très bien les lire ou modifier avec le bloc-notes.
En plus, dans delphi, il y a tout ce qu'il faut pour les utiliser savament  : voir TIniFile.

Commentaire de Dreuteu le 22/03/2005 08:27:08

Oui oui, je sais bien lol ...
Mais je voulais faire en sorte qu'a la premiere utilisation l'utilisateur choisisse le fichier a convertir (vu que chez moi c'est toujours le même)...

Par contre l'impression ne passe pas et c'est étrange... Si quelqu'un a une idée sur la facon d'imprimer lecontenu d'un Memo je suii très preneur.

Commentaire de Debiars le 22/03/2005 14:07:04

<o> Pour imprimer sans fioritures essaye la procédure suivante :

procedure TForm1.Button1Click(Sender: TObject);
var  fic : TextFile;
     i : integer;
begin
  Memo1.Lines.LoadFromFile('unit1.pas');
  AssignFile(fic,'LPT1');
  Rewrite(fic);
  for i := 0 to Memo1.Lines.Count-1 do
    WriteLn(fic,Memo1.Lines[i]);
  CloseFile(fic);
end;

Tu peux bien sûr améliorer avec une marge en faisant :

WriteLn(fic,'     '+Memo1.Lines[i]);

jp \o/

...etc...

Commentaire de Dreuteu le 22/03/2005 17:06:17

Ouaouh...

Grand merci a toi! J'avais reutilisé en desespoir de cause une source de ManChesTer mais elle est bien plus Longue.

Grand merci encore une fois

Commentaire de djicfr le 26/03/2005 21:49:34

i : integer; // lecture des caracteres  
r: TRect; //pour l'impression
i: Integer;

i est déclaré 2 fois


De plus, sous windows XP il suffit de taper :

tree /a /f >> repertoire.txt

/a le fichier text en Ascii compréhensible
/f pour lister les fichiers ...

Sinon ton code est sympa.

Commentaire de Dreuteu le 27/03/2005 16:22:39

Exact petite erreur de ma part...
Mais la je voulais faire du code exploitable sous tous les Windows, et il me semble que le /a /f ne fonctionne pas toujours...

Commentaire de djicfr le 27/03/2005 16:50:38

oui le /a/f ne fonctionne que sous Windows XP / 2000

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales