Bonjour à tous,

Je vous présente le problème : j'ai 1 répertoire films, des sous répertoires (western, comédie, etc) et dans ces répertoires des documents.doc, des affiches des films.bmp et des musiques de films.mp3

j'ai mis en place en Tedit qui renseigne une chaine de caractères (exemple :wars)

Je voudrais donc une procédure qui teste la chaine de caractères et qui balaye tous les sous répertoires à la recherche de l'occurence mise dans le Tedit et qui n'affiche que les fichiers.doc
Je pensais à Pos mais cela ne fonctionne pas
Pouvez vous, s'il vous plait, m'aider
voila le code
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
Function ListeFichiers(Chemin:String):Integer;
Var S:TSearchRec;
suitecaracteres : string;
nomfichier : string;
i : integer;
Begin
  Chemin:=IncludeTrailingPathDelimiter(Chemin);
  If FindFirst(Chemin+'*.*',faAnyFile,S)=0 Then
    Begin
      Repeat
        if (S.Name<>'.')And(s.Name<>'..') Then
          Begin
            if (S.Attr And faDirectory)<>0 Then
              ListeFichiers(Chemin+S.FindData.cFileName)
            Else
              begin
//j'ai été obligé de rajouter Form1. pourquoi ?
                suitecaracteres := form1.Texterecherche.Text;
                Nomfichier := ExtractFilename(changeFileExt(Chemin+S.FindData.cFileName,''));
                i:= Pos(suitecaracteres;nomfichier); //c'est là que cela coince : Pas assez de caractères originaux
                if i<>0 then
                  Form1.Liste.Items.Add(nomfichier); //mais là : je crois que j'aurais tous les fichiers
              end;
 
          End;
      // Recherche du suivant
      Until FindNext(S)<>0;
      FindClose(S);
    End;
End;
 
 
procedure TForm1.rechercheClick(Sender: TObject);
begin
  liste.items.clear;
  Recherche.enabled:= False;
  try
    ListeFichiers(AfficheRepFilms.Text);
  Finally
    Recherche.enabled:= true;
  end;
end;
Merci beaucoup
Salutations
byc001