Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPOSANT TVUXFILESCANNER


Information sur la source

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é: 2 859 / 420

Note :
Aucune note

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.
 

Commentaires et avis

signaler à un administrateur
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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,156 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.