begin process at 2012 02 08 09:37:46
  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 :5 554

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 Source avec une capture RECHERCHE PAR EXTENSION AVEC JVCL par Weirdy
Source avec Zip Source avec une capture FICHIER DUPLIQUÉ AVEC UNE TABLE DE HACHAGE par jerome1875
Source avec Zip Source avec une capture WII SD CARD NAVIGATOR 1.0.0.5 ALPHA par skyangel21
Source avec Zip Source avec une capture SIZECONVERTER : UNE MINI LIBRAIRIE DE CONVERSION DE TAILLE par LaDentDeLait
Source avec Zip Source avec une capture ENREGISTREMENT DES DONNÉES DANS L'EXE par yanb

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 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,496 sec (3)

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