EricStib
Messages postés13Date d'inscriptionvendredi 23 février 2007StatutMembreDernière intervention26 avril 2007
-
4 avril 2007 à 11:21
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
5 avril 2007 à 21:29
Bonjour à tous,
J'essaie d'utiliser le composant ExtFileOp de F0xi pour copier des fichiers mais sans passer par une boite de dialogue.
Cela fonctionne bien dans un répertoire où il n'y a QUE des fichiers mais si il s'agit d'un répertoire contenant des sous-répertoires, j'obtiens un message d'erreur et rien n'est copier.
Je me doute bien que c'est dans mon code que ce situe le problème mais je me plante lamentablement depuis quelques jours sans voir la solution.
Peut-être que vous pourriez me donner la voie à suivre en analysant le code ci-dessous ?
procedure TFormPrincipale.p_CopierLesFichiers;
{copie des fichiers à l'aide du composant de f0xi (ExtFileOp1)}
var
Status : Integer;
SearchRec : TSearchRec;
ListeFichiers : TStringList;
begin
//on crée la liste
ListeFichiers := TStringList.Create;
//mise à blanc
ListeFichiers.Clear;
Status := FindFirst(dirSource + '*.*',faAnyFile,SearchRec);
while Status = 0 do
begin
if (SearchRec.Attr and faDirectory) = 0 then
//récupération des fichiers
ListeFichiers.Add(SearchRec.Name);
status := Findnext(SearchRec);
end;
with TFileOp.Create(Self) do
try
Files.Assign(ListeFichiers);
Destination := dirDestJourHeure;
FileOperation := fcCopy;
Execute;
finally
Free;
end;
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 4 avril 2007 à 12:41
tu peu deja corriger ça :
procedure TFormPrincipale.p_CopierLesFichiers;
var
SR : TSearchRec;
begin
with TFileOp.Create(Self) do
try
Files.BeginUpdate;
Files.Clear;
if FindFirst(dirSource + '*.*',faAnyFile, SR) = 0 then
repeat
if ((SR.Attr and faDirectory) = 0) and
((SR.Name <> '.') and (SR.Name <> '..')) then
Files.Add(dirSource+SR.Name);
until Findnext(SR) <> 0;
EricStib
Messages postés13Date d'inscriptionvendredi 23 février 2007StatutMembreDernière intervention26 avril 2007 5 avril 2007 à 02:27
Merci F0xi,
C'est déjà nettement mieux ! Au moins il copie le contenu d'un répertoire même quand il y a un autre dossier dedans... mais il ne copie que les fichiers et pas les sous-répertoires et le contenu de ceux-çi.
Je vais faire une liste des répertoires et sous-répertoires et je me servirai de cette liste pour modifier ma variable "source". A l'aide de CreateDir (ou ForceCreateDir), je vais créer les répertoires au fur et à mesure et copier leurs contenu. Je pense que cela devrait allez comme ça (?)
Je vais essayer ça et je posterai le code si cela marche.
Merci encore,
EricStib