Bonjour à toutes et à tous,

Je teste pas mal des anciennes applications en cherchant d'autres méthodes.

Dans un dossier j'ai un nombre de fichiers VTS_01_*.VOB que j'aimerai afficher en ligne dans un Tedit comme ceci :

"concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB"
Mais il peut y avoir plus de 3 fichiers VTS_01_*.VOB dans ce dossier.

J'utilise la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Function CompteFichiers(Chemin:String):Integer;
Var S:TSearchRec;
Begin
  Chemin:=IncludeTrailingPathDelimiter(Chemin);
  Result:=0;
  // Recherche de la première entrée du répertoire
  If FindFirst(Chemin+'VTS_01_*.VOB',faAnyFile,S)=0
  Then Begin
    Repeat
      // Il faut absolument dans le cas d'une procédure récursive ignorer
      // les . et .. qui sont toujours placés en début de répertoire
      // Sinon la procédure va boucler sur elle-même.
      If (S.Name<>'.')And(s.Name<>'..')
      Then Begin
        If (S.Attr And faDirectory)<>0
          // Dans le cas d'un sous-repertoire on appelle la même procédure
          Then Result:=Result+CompteFichiers(Chemin+S.FindData.cFileName)
          // Sinon on compte simplement le fichier
          Else Inc(Result);
      End;
    // Recherche du suivant
    Until FindNext(S)<>0;
    FindClose(S);
  End;
End;
Utilisation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 // "concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB"
 
 ShowMessage(IntToStr(CompteFichiers(chappli))+ ' Fichier(s) de type VOB');
 
end;
Le nombre de fichiers est bien détecté mais je patine pour les retranscrire comme le modèle dans le Tedit.

Merci d'avance,

@+,

cincap