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