begin process at 2012 02 11 03:08:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > COMPOSANT TVUXFILESCANNER

COMPOSANT TVUXFILESCANNER


 Information sur la source

Note :
Aucune note
Catégorie :Composants Niveau :Expert Date de création :16/07/2002 Date de mise à jour :14/05/2004 15:39:03 Vu / téléchargé :4 021 / 881

Auteur : VUX

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

 Description

Ce composant permet de parcourir une arborescence.
On peut spécifier:
-le filtre (*.*), etc...
-les attributs
-Si l' on parcourt les sous-répertoires

Note: j'ai modifie le zip marchait pas, je mets le code directement:

Source

  • unit VUXFileScanner;
  • {
  • Composant TVUXFileScanner
  • Développé par:
  • VUX (vux@fr.st)
  • Composant non visuel permettant de parcourir une arborescence de
  • répertoires/sous répertoires.
  • Petit bug connu: Pour parcourir les sous répertoires, la propriété
  • filter doit être obligatoirement : "*.*"
  • Version actuelle: 1.0
  • Mises à jour:
  • }
  • interface
  • uses
  • Windows, Messages, SysUtils, Classes,FileCtrl;
  • type
  • TDataFoundEvent = procedure(Sender :Tobject;FileName:String;
  • const Filedata:TSearchRec;var Stop: Boolean) of object;
  • { Evenement utilisé lorsque l' on a trouvé un fichier.
  • \-Filename : Nom du fichier
  • \-FileData : Informations sur le fichier
  • \-Stop : Si vous le passez à True, le Scan est interrompu. }
  • TFileAttributes = class(Tpersistent)
  • public
  • FatReadOnly : Boolean;
  • FatHidden : Boolean;
  • FatSysFile : Boolean;
  • FatVolumeID : Boolean;
  • FatDirectory : Boolean;
  • FatArchive : Boolean;
  • FatAnyFile : Boolean;
  • published
  • property atReadOnly : Boolean read FatReadOnly write fatreadonly;
  • property atHidden : Boolean read FatHidden write FatHidden;
  • property atSysFile : Boolean read FatSysFile write FatSysFile;
  • property atVolumeID : Boolean read FatVolumeID write FatVolumeID;
  • property atDirectory : Boolean read FatDirectory write FatDirectory;
  • property atArchive : Boolean read FatArchive write FatArchive;
  • property atAnyFile : Boolean read FatAnyFile write FatAnyFile;
  • end;
  • TVUXFileScanner = class(tcomponent)
  • private
  • FBaseDir,FFilter : string;
  • FRecurse,FStop : Boolean;
  • Fattrib : TFileAttributes;
  • FOnDataFound : TDataFoundEvent;
  • FOnScanComplete,FOnStop : TNotifyEvent;
  • procedure EnumFiles(Basedir,Filter : string);
  • procedure EnumFilesRec(Basedir,Filter : string);
  • function GetAttrCode : Integer;
  • procedure SetAttrib(Value : TFileAttributes);
  • public
  • constructor Create(AOwner :Tcomponent) ; override;
  • procedure Scan;
  • destructor Destroy;override;
  • published
  • Property Attributes : TFileAttributes read Fattrib write Setattrib;
  • Property OnDataFound : TDataFoundEvent read FOnDataFound write FOnDataFound;
  • Property OnScanComplete : TNotifyEvent read FOnScanComplete write FOnScanComplete;
  • Property OnStop : TNotifyEvent read FOnStop write FonStop;
  • Property Recurse : Boolean read Frecurse write Frecurse;
  • Property BaseDir : string read FBaseDir write FBaseDir;
  • Property Filter : string read FFilter write FFilter;
  • end;
  • procedure Register;
  • implementation
  • procedure Register;
  • begin
  • RegisterComponents('VUX Utils', [TVUXFileScanner]);
  • end;
  • constructor TVUXFileScanner.Create(AOwner : Tcomponent);
  • begin
  • inherited Create(AOWner);
  • Fattrib := TFileAttributes.Create;
  • end;
  • destructor TVUXFileScanner.Destroy;
  • begin
  • Fattrib.Free;
  • inherited destroy;
  • end;
  • procedure TVUXFileScanner.SetAttrib(Value : TFileAttributes);
  • begin
  • Fattrib.AssignTo(Value);
  • end;
  • procedure TVUXFileScanner.Scan;
  • begin
  • FStop := False;
  • if copy(FBaseDir,length(FBasedir),1) <> '\' then
  • Fbasedir := Fbasedir + '\';
  • if Frecurse then EnumFilesRec(FBaseDir,FFilter)
  • else EnumFiles(FBaseDir,FFilter);
  • If Fstop then begin
  • If assigned(OnStop) then OnStop(self);
  • end else
  • If assigned(OnScanComplete) then OnscanComplete(self);
  • end;
  • function TVUXFileScanner.GetAttrCode : Integer;
  • var
  • Tmp : Integer;
  • begin
  • Tmp := 0;
  • If Fattrib.atAnyFile then
  • tmp := FaAnyFile
  • else begin
  • If Fattrib.atReadOnly then tmp := tmp + faReadOnly;
  • If Fattrib.atHidden then tmp := tmp + fahidden;
  • If Fattrib.atSysFile then tmp := tmp + faSysFile;
  • If Fattrib.atVolumeID then tmp := tmp + faVolumeID;
  • If Fattrib.atDirectory then tmp := tmp + faDirectory;
  • If Fattrib.atArchive then tmp := tmp + faArchive;
  • end;
  • Result := Tmp;
  • end;
  • procedure TVUXFileScanner.EnumFiles(Basedir,Filter : string);
  • var
  • Fdata: TSearchRec;
  • Search: string;
  • Hfile: integer;
  • begin
  • search := Basedir + Filter;
  • Hfile := findfirst(search,getattrcode,Fdata);
  • if (Hfile = 0) then
  • begin
  • repeat
  • if (Fdata.Name <> '.') and (Fdata.name <> '..') then begin
  • If assigned(OnDataFound) then
  • ondatafound(self,BaseDir + Fdata.Name,Fdata,FStop);
  • end;
  • until (FindNext(Fdata) <> 0) or FStop = True;
  • end;
  • findclose(fdata);
  • end;
  • procedure TVUXFileScanner.EnumFilesRec(Basedir,Filter : string);
  • var
  • Fdata: TSearchRec;
  • Search: string;
  • Hfile: integer;
  • begin
  • search := Basedir + Filter;
  • Hfile := findfirst(search,getattrcode,Fdata);
  • if (Hfile = 0) then
  • begin
  • repeat
  • if (Fdata.Name <> '.') and (Fdata.name <> '..') then begin
  • If assigned(OnDataFound) then
  • ondatafound(self,BaseDir + Fdata.Name,Fdata,Fstop);
  • if Directoryexists(Basedir + Fdata.name) then begin
  • EnumFilesRec(Basedir + fdata.Name + '\',Filter);
  • end;
  • end;
  • until (FindNext(Fdata) <> 0) or FStop = True;
  • end;
  • findclose(fdata);
  • end;
  • end.
unit VUXFileScanner;
{
Composant TVUXFileScanner

Développé par:
VUX (vux@fr.st)

Composant non visuel permettant de parcourir une arborescence de
répertoires/sous répertoires.

Petit bug connu: Pour parcourir les sous répertoires, la propriété
filter doit être obligatoirement : "*.*"

Version actuelle: 1.0

Mises à jour:
}
interface

uses
  Windows, Messages, SysUtils, Classes,FileCtrl;

type
  TDataFoundEvent = procedure(Sender :Tobject;FileName:String;
                const Filedata:TSearchRec;var Stop: Boolean) of object;
{ Evenement utilisé lorsque l' on a trouvé un fichier.
  
  \-Filename : Nom du fichier
  
  \-FileData : Informations sur le fichier
  
  \-Stop : Si vous le passez à True, le Scan est interrompu. }

  TFileAttributes = class(Tpersistent)
  public
    FatReadOnly : Boolean;
    FatHidden : Boolean;
    FatSysFile : Boolean;
    FatVolumeID : Boolean;
    FatDirectory : Boolean;
    FatArchive : Boolean;
    FatAnyFile : Boolean;
  published
    property atReadOnly : Boolean read FatReadOnly write fatreadonly;
    property atHidden : Boolean read FatHidden write FatHidden;
    property atSysFile : Boolean read FatSysFile write FatSysFile;
    property atVolumeID : Boolean read FatVolumeID write FatVolumeID;
    property atDirectory : Boolean read FatDirectory write FatDirectory;
    property atArchive : Boolean read FatArchive write FatArchive;
    property atAnyFile : Boolean read FatAnyFile write FatAnyFile;
  end;


  TVUXFileScanner = class(tcomponent)
  private
    FBaseDir,FFilter : string;
    FRecurse,FStop : Boolean;
    Fattrib : TFileAttributes;
    FOnDataFound : TDataFoundEvent;
    FOnScanComplete,FOnStop : TNotifyEvent;
    procedure EnumFiles(Basedir,Filter : string);
    procedure EnumFilesRec(Basedir,Filter : string);
    function GetAttrCode : Integer;
    procedure SetAttrib(Value : TFileAttributes);
  public
    constructor Create(AOwner :Tcomponent) ; override;
    procedure Scan;
    destructor Destroy;override;
  published
    Property Attributes : TFileAttributes read Fattrib write Setattrib;
    Property OnDataFound : TDataFoundEvent read FOnDataFound write FOnDataFound;
    Property OnScanComplete : TNotifyEvent read FOnScanComplete write FOnScanComplete;
    Property OnStop : TNotifyEvent read FOnStop write FonStop;
    Property Recurse : Boolean read Frecurse write Frecurse;
    Property BaseDir : string read FBaseDir write FBaseDir;
    Property Filter : string read FFilter write FFilter;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('VUX Utils', [TVUXFileScanner]);
end;

constructor TVUXFileScanner.Create(AOwner : Tcomponent);
begin
  inherited Create(AOWner);
  Fattrib := TFileAttributes.Create;
end;

destructor TVUXFileScanner.Destroy;
begin
  Fattrib.Free;
  inherited destroy;
end;

procedure TVUXFileScanner.SetAttrib(Value : TFileAttributes);
begin
  Fattrib.AssignTo(Value);
end;

procedure TVUXFileScanner.Scan;
begin
  FStop := False;
  if copy(FBaseDir,length(FBasedir),1) <> '\' then
    Fbasedir := Fbasedir + '\';
  if Frecurse then EnumFilesRec(FBaseDir,FFilter)
  else EnumFiles(FBaseDir,FFilter);

  If Fstop then begin
    If assigned(OnStop) then OnStop(self);
  end else
    If assigned(OnScanComplete) then OnscanComplete(self);
end;


function TVUXFileScanner.GetAttrCode : Integer;
var
Tmp : Integer;
begin
  Tmp := 0;
  If Fattrib.atAnyFile  then
    tmp := FaAnyFile
  else begin
    If Fattrib.atReadOnly then tmp := tmp + faReadOnly;
    If Fattrib.atHidden  then tmp := tmp + fahidden;
    If Fattrib.atSysFile then tmp := tmp + faSysFile;
    If Fattrib.atVolumeID then tmp := tmp + faVolumeID;
    If Fattrib.atDirectory then tmp := tmp + faDirectory;
    If Fattrib.atArchive then tmp := tmp + faArchive;
  end;
  Result := Tmp;
end;



procedure TVUXFileScanner.EnumFiles(Basedir,Filter : string);
var
Fdata: TSearchRec;
Search: string;
Hfile: integer;
begin
search := Basedir + Filter;
Hfile := findfirst(search,getattrcode,Fdata);
if (Hfile = 0) then
begin
        repeat
          if (Fdata.Name <> '.') and (Fdata.name <> '..') then begin
            If assigned(OnDataFound) then
              ondatafound(self,BaseDir + Fdata.Name,Fdata,FStop);
          end;
        until (FindNext(Fdata) <> 0) or FStop = True;
end;
findclose(fdata);
end;

procedure TVUXFileScanner.EnumFilesRec(Basedir,Filter : string);
var
Fdata: TSearchRec;
Search: string;
Hfile: integer;
begin
search := Basedir + Filter;
Hfile := findfirst(search,getattrcode,Fdata);
if (Hfile = 0) then
begin
        repeat
          if (Fdata.Name <> '.') and (Fdata.name <> '..') then begin
            If assigned(OnDataFound) then
              ondatafound(self,BaseDir + Fdata.Name,Fdata,Fstop);
            if Directoryexists(Basedir + Fdata.name) then begin
              EnumFilesRec(Basedir + fdata.Name + '\',Filter);
            end;
          end;
        until (FindNext(Fdata) <> 0) or FStop = True;
end;
findclose(fdata);
end;

end.
 



 Sources du même auteur

Source avec Zip LISTER LES DÉPENDANCES D' UN PROJET VB
IMPORTER UN CONTRÔLE ACTIVEX
PILOTER EXCEL DEPUIS DELPHI
Source avec Zip COMPOSANT TVUXFILECOPIER
FONCTIONS EXLODE ET IMPLODE DU PHP

 Sources de la même categorie

Source avec Zip MOVCONTROL par abmed1963
Source avec Zip Source avec une capture PACKAGE DE COMPOSANTS CINDY V4.41 par MAURICIO
Source avec Zip Source avec une capture DBNAVIGATORPLUS par pascal1541
Source avec Zip Source avec une capture EVALUATION D' EXPRESSIONS MATHÉMATIQUE (MÉTHODE RPN) par MAURICIO
Source avec Zip Source avec une capture COMPOSANT TQPROGRESSBAR UNE BARRE DE PROGRESSION... par yanb

Commentaires et avis

Commentaire de BruNews le 09/05/2004 18:55:27 administrateur CS

ADMIN INFO:

le zip de ta source semble avoir morfle, surement au dernier crash chez l'hebergeur.
Serait bien d'en remettre un valide, merci d'avance.

BruNews, Admin CS, MVP Visual C++
ciao...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 (4)

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